H2 1.4.193, Data Nucleus 4.1.6, Hikari connection pool, embedded mode.

I have multiple threads attempting to read the same table but different 
rows.  Each thread has its own PersistenceManager, transaction, and 
connection.  The threads are behaving serially because of   
org.h2.mvstore.db.TransactionStore$TransactionMap.getValue(TransactionStore.java:1202)

Because of this contention my performance gets far worse with multiple 
threads when the expectation is that it would improve since the queries are 
accessing different rows.

Any ideas on what am I doing wrong?

Thanks,
Aaron

"PollConfig6@6240" prio=5 tid=0x2d nid=NA runnable
  java.lang.Thread.State: RUNNABLE
blocks PollConfig16@6260
blocks PollConfig15@6252
blocks PollConfig14@6425
blocks PollConfig13@6175
blocks PollConfig12@6429
blocks PollConfig11@6430
blocks PollConfig10@6431
blocks PollConfig9@6302
blocks PollConfig8@6432
blocks PollConfig7@6246
blocks PollConfig5@6244
blocks PollConfig4@6433
blocks PollConfig3@6272
blocks PollConfig1@6434
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap.getValue(TransactionStore.java:1202)
 - locked <0x193e> (a org.h2.mvstore.MVMap)
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap.get(TransactionStore.java:1180)
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap.get(TransactionStore.java:1148)
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap.containsKey(TransactionStore.java:1168)
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap$1.fetchNext(TransactionStore.java:1415)
 at 
org.h2.mvstore.db.TransactionStore$TransactionMap$1.next(TransactionStore.java:1430)
 at 
org.h2.mvstore.db.MVSecondaryIndex$MVStoreCursor.next(MVSecondaryIndex.java:507)
 at org.h2.index.IndexCursor.next(IndexCursor.java:305)
 at org.h2.table.TableFilter.next(TableFilter.java:498)
 at org.h2.table.TableFilter.next(TableFilter.java:537)
 at org.h2.command.dml.Select.queryFlat(Select.java:542)
 at org.h2.command.dml.Select.queryWithoutCache(Select.java:655)
 at org.h2.command.dml.Query.query(Query.java:341)
 at org.h2.command.dml.Query.query(Query.java:309)
 at org.h2.command.dml.Query.query(Query.java:36)
 at org.h2.command.CommandContainer.query(CommandContainer.java:110)
 at org.h2.command.Command.executeQuery(Command.java:201)
 - locked <0x196f> (a org.h2.engine.Session)
 at 
org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:110)
 at 
com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
 at 
com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java:-1)
 at 
org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeQuery(ParamLoggingPreparedStatement.java:375)
 at 
org.datanucleus.store.rdbms.SQLController.executeStatementQuery(SQLController.java:552)
 at 
org.datanucleus.store.rdbms.query.JDOQLQuery.performExecute(JDOQLQuery.java:616)
 at org.datanucleus.store.query.Query.executeQuery(Query.java:1844)
 at org.datanucleus.store.query.Query.executeWithArray(Query.java:1733)
 at org.datanucleus.store.query.Query.execute(Query.java:1715)
 at 
org.datanucleus.api.jdo.query.JDOQLTypedQueryImpl.executeInternalQuery(JDOQLTypedQueryImpl.java:938)
 at 
org.datanucleus.api.jdo.query.JDOQLTypedQueryImpl.executeList(JDOQLTypedQueryImpl.java:837)

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to