[
http://issues.apache.org/jira/browse/DERBY-465?page=comments#action_12316319 ]
Peter Kovgan commented on DERBY-465:
------------------------------------
I have also errors in my new WRITE-multithreading test:
Description:
1 thread runs:
Thread Cycle:{
openConnection()
insert(5000 rows, with commit per 10 rows)
update(affects 5 000 rows)
delete(affects 5 000 rows)
closeConnection()
}
Error is on update and on delete, it seems that error may be because connection
was not closed after insert:
ERROR 40XL1: A lock could not be obtained within the time requested
at
org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
at org.apache.derby.impl.services.locks.LockSet.lockObject(LockSet.java)
at
org.apache.derby.impl.services.locks.SinglePool.lockAnObject(SinglePool.java)
at
org.apache.derby.impl.services.locks.SinglePool.lockObject(SinglePool.java)
at
org.apache.derby.impl.store.raw.xact.RowLocking2.lockRecordForRead(RowLocking2.java)
at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.lockPositionForRead(OpenConglomerate.java)
at
org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(GenericScanController.java)
at
org.apache.derby.impl.store.access.heap.HeapScan.fetchNext(HeapScan.java)
at
org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(TableScanResultSet.java)
at
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(ProjectRestrictResultSet.java)
at
org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(NormalizeResultSet.java)
at
org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java)
at
org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java)
at
org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java)
at com.bmc.dbtest.threads.DBOperations.testUpdate(Unknown Source)
at com.bmc.dbtest.threads.User.performUpdate(Unknown Source)
at com.bmc.dbtest.threads.User.runCycle(Unknown Source)
at com.bmc.dbtest.threads.User.run(Unknown Source)
ERROR 40XL1: A lock could not be obtained within the time requested
at
org.apache.derby.iapi.error.StandardException.newException(StandardException.java)
at org.apache.derby.impl.services.locks.LockSet.lockObject(LockSet.java)
at
org.apache.derby.impl.services.locks.SinglePool.lockAnObject(SinglePool.java)
at
org.apache.derby.impl.services.locks.SinglePool.lockObject(SinglePool.java)
at
org.apache.derby.impl.store.raw.xact.RowLocking2.lockRecordForRead(RowLocking2.java)
at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.lockPositionForRead(OpenConglomerate.java)
at
org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(GenericScanController.java)
at
org.apache.derby.impl.store.access.heap.HeapScan.fetchNext(HeapScan.java)
at
org.apache.derby.impl.sql.execute.TableScanResultSet.getNextRowCore(TableScanResultSet.java)
at
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(ProjectRestrictResultSet.java)
at
org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java)
at
org.apache.derby.impl.sql.execute.DeleteResultSet.setup(DeleteResultSet.java)
at
org.apache.derby.impl.sql.execute.DeleteResultSet.open(DeleteResultSet.java)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java)
at com.bmc.dbtest.threads.DBOperations.makeDelete(Unknown Source)
at com.bmc.dbtest.threads.User.performDelete(Unknown Source)
at com.bmc.dbtest.threads.User.runCycle(Unknown Source)
at com.bmc.dbtest.threads.User.run(Unknown Source)
> Embedded Derby-PointBase comparison
> -----------------------------------
>
> Key: DERBY-465
> URL: http://issues.apache.org/jira/browse/DERBY-465
> Project: Derby
> Type: Wish
> Components: Test
> Versions: 10.0.2.1, 10.0.2.0
> Environment: Windows Server 2003, 4 processors, summary CPU 3.00 Ghz, RAM 1
> Gb
> Reporter: Peter Kovgan
> Attachments: Benchmarks_info_independent.doc, DBOperations.java,
> Multithreading-access read.doc, User.java, derby-optimization.doc,
> derby-pb1.doc
>
> I have tested 4 major embedded DB.
> I have found that major disadvantage of Derby is
> 1)low insert speed and
> 2)significant performance degradation in select, update, delete operation
> speed starting from some table size.
> PointBase in comparison has not such degradation.
> It will be better if you improve your product.
> Good luck and thank you.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira