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.
