We are testing the latest H2 version (from a recent nightly build, actually) in place of a rather ancient but serviceable version 1.2. We are seeing performance degradation of at least a factor of 6. We have suites of test. I can supply you with comparison timings, but for example a suite that takes 20 minutes on the old H2 is timing out after 3 hours. If we don't need MVCC for a suite, we could run it without it. Will that recover the lost time? (That's an experiment I will run later.) We want to take advantage of MVCC (and DBStore) for some integration suites where we hope it will prevent deadlocks. Let me know if you need more details, or if you can respond with general comments about expected performance.
--
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 h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
| name (hide) | value (hide) |
|---|---|
| CREATE_BUILD | 187 |
| DB_CLOSE_DELAY | -1 |
| CACHE_SIZE | 131072 |
| info.BUILD_ID | 187 |
| info.VERSION_MAJOR | 1 |
| info.VERSION_MINOR | 4 |
| info.VERSION | 1.4.187 (2015-04-10) |
| property.java.runtime.version | 1.7.0_45-b18 |
| property.java.vm.name | Java HotSpot(TM) 64-Bit Server VM |
| property.java.vendor | Oracle Corporation |
| property.os.name | Windows 7 |
| property.os.arch | amd64 |
| property.os.version | 6.1 |
| property.sun.os.patch.level | Service Pack 1 |
| property.file.separator | \ |
| property.path.separator | ; |
| property.line.separator | |
| property.user.country | US |
| property.user.language | en |
| property.user.variant | |
| property.file.encoding | windows-1252 |
| EXCLUSIVE | FALSE |
| MODE | Oracle |
| MULTI_THREADED | 0 |
| MVCC | TRUE |
| QUERY_TIMEOUT | 0 |
| RETENTION_TIME | 0 |
| LOG | 2 |
| ALIAS_COLUMN_NAME | false |
| ANALYZE_AUTO | 2000 |
| ANALYZE_SAMPLE | 10000 |
| COMPRESS | false |
| DATABASE_TO_UPPER | true |
| DB_CLOSE_ON_EXIT | true |
| DEFAULT_CONNECTION | false |
| DEFAULT_ESCAPE | \ |
| DEFAULT_TABLE_ENGINE | <null> |
| DEFRAG_ALWAYS | false |
| DROP_RESTRICT | true |
| EARLY_FILTER | false |
| ESTIMATED_FUNCTION_TABLE_ROWS | 1000 |
| FUNCTIONS_IN_SCHEMA | true |
| LARGE_TRANSACTIONS | true |
| LOB_TIMEOUT | 300000 |
| MAX_COMPACT_COUNT | 2147483647 |
| MAX_COMPACT_TIME | 200 |
| MAX_QUERY_TIMEOUT | 0 |
| MV_STORE | true |
| NESTED_JOINS | true |
| OPTIMIZE_DISTINCT | true |
| OPTIMIZE_EVALUATABLE_SUBQUERIES | true |
| OPTIMIZE_INSERT_FROM_SELECT | true |
| OPTIMIZE_IN_LIST | true |
| OPTIMIZE_IN_SELECT | true |
| OPTIMIZE_IS_NULL | true |
| OPTIMIZE_OR | true |
| OPTIMIZE_TWO_EQUALS | true |
| OPTIMIZE_UPDATE | true |
| PAGE_STORE_INTERNAL_COUNT | false |
| PAGE_STORE_MAX_GROWTH | 131072 |
| PAGE_STORE_TRIM | true |
| QUERY_CACHE_SIZE | 8 |
| RECOMPILE_ALWAYS | false |
| RECONNECT_CHECK_DELAY | 200 |
| REUSE_SPACE | true |
| ROWID | true |
| SELECT_FOR_UPDATE_MVCC | true |
| SHARE_LINKED_CONNECTIONS | true |
| jdbc:h2:mem:px Attached is the log file from our test suite with the thread dumps in line. I hope these are useful for you. |
We are testing the latest H2 version (from a recent nightly build, actually) in place of a rather ancient but serviceable version 1.2. We are seeing performance degradation of at least a factor of 6. We have suites of test. I can supply you with comparison timings, but for example a suite that takes 20 minutes on the old H2 is timing out after 3 hours. If we don't need MVCC for a suite, we could run it without it. Will that recover the lost time? (That's an experiment I will run later.) We want to take advantage of MVCC (and DBStore) for some integration suites where we hope it will prevent deadlocks. Let me know if you need more details, or if you can respond with general comments about expected performance.
--
Hi,Looking at the thread dumps, the bottleneck seems to be reading metadata. There are two main cases:com.guidewire.pl.system.database.support.H2CatalogSupport.columnExists(H2CatalogSupport.java:81)com.guidewire.pl.system.database.upgrade.BeforeUpgradeColumnImpl.getTypeRepresentationInDatabase(BeforeUpgradeColumnImpl.java:478)I'm not sure what queries are run, I will try to find out.It doesn't look related to MVStore or MVCC, but maybe there was a change that made it slower. Are you sure it is faster without MVStore? What happens if you append ";mv_store=false" to the database URL, and try with the latest version?Regards,
We are testing the latest H2 version (from a recent nightly build, actually) in place of a rather ancient but serviceable version 1.2. We are seeing performance degradation of at least a factor of 6. We have suites of test. I can supply you with comparison timings, but for example a suite that takes 20 minutes on the old H2 is timing out after 3 hours. If we don't need MVCC for a suite, we could run it without it. Will that recover the lost time? (That's an experiment I will run later.) We want to take advantage of MVCC (and DBStore) for some integration suites where we hope it will prevent deadlocks. Let me know if you need more details, or if you can respond with general comments about expected performance.--
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 h2-database+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
I'll look at this, but I'm out next week. I flipped all my tests (~10,000) back to MvStore and there are a few issues in addition to the pref issue. If you have any more analysis or debugging instructions for the perf issue, send them along next week.
Sent from my Cyanogen phone
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
(Sent as a separate private email to thomas.to...@gmail.com.)
Here is the trace files that I hope let you see why the newer version of H2 can be much slower that the old one. I ran a suite of four or five test classes with various test methods from the suite that I mentioned times out after three hours and runs in twenty minutes on H2 1.3. I realized after I started my run that the trace file was overflowing and being saved to px.trace.db.old, but that every time it did that it overwrote the old one, so I started renaming the .old file. So this zip contains eight of the files. I missed all the stuff at the beginning of course, and also missed on near the end when I didn't rename the file fast enough. If there is anything else you need, let me know.
I noticed that periodically the trace file stopped growing for ten or twenty seconds. Maybe this is the sign of the culprit.
If this email doesn't reach you, perhaps 7 MNB is too big and I should break the files and emails up into separate files.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.
You first indicate that the query can be sped by taking into account the schema name.
Later you indicate I should change the metadata, for example to use materialized metadata tables.
What is the simplest way to make this query efficient? Can it be sped up by simply changing the query?
--
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 h2-database...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "H2 Database" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/h2-database/rjg5E-ibRtk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to h2-database...@googlegroups.com.
Hi,The "missing lob entry" sounds like you try to access LOB after it has been deleted or updated, or after the result set has been closed. Do you know if that's possible? Please note the stack trace is missing in your error message.Regards,Thomas
When I with ";mv_store=false", a sizeable percentage of the tests fail with
java.lang.RuntimeException: com.guidewire.pl.system.exception.DBException: Nested: org.h2.jdbc.JdbcSQLException: IO Exception: "java.io.IOException: org.h2.jdbc.JdbcSQLException: IO Exception: ""Missing lob entry: 4"" [90028-187]"; "lob: null table: -3 id: 4" [90031-187] EXECUTED SQL [[exec] [junit] SQLException.getErrorCode() = 90031[exec] [junit] SQLException.getSQLState() = 90031[exec] [junit] Connection: jdbc:h2:mem:@name@[exec] [junit][exec] [junit] Top level profiler tag: T:main[exec] [junit] Isolation level: Read Committed[exec] [junit] Autocommit: false[exec] [junit] App server transaction started at: Wed Jun 17 12:15:07 PDT 2015, current time: Wed Jun 17 12:15:08 PDT 2015, _isReadOnly: true[exec] [junit] Error executing:[exec] [junit] SELECT bRoot.ConnectionStarted col0, bRoot.PublicID col1, bRoot.BgTasksStopped col2, bRoot.BlobData col3, bRoot.PlannedShutdownTime col4, bRoot.UserSessions col5, bRoot.Env col6, bRoot.Build col7, bRoot.ConnectionStopped col8, bRoot.PlannedShutdownInitiated col9, bRoot.LogicalName col10, bRoot.RunLevel col11, bRoot.Uuid col12, bRoot.ID col13, bRoot.Roles col14, bRoot.ServerStarted col15, bRoot.ServerId col16, bRoot.LastUpdate col17 FROM px_clustermemberdata bRoot WHERE bRoot.ID = ?[exec] [junit] Parameters:[5000000001]]Looking for the "missing lob" message in the H2 discussion group, I see this has happened in the past, but never saw a resolution.When I reversed by change that turned off mvStore, these errors went away.Any other suggestions?
On Tuesday, June 16, 2015 at 9:41:29 AM UTC-7, Thomas Mueller wrote:
Hi,
Looking at the thread dumps, the bottleneck seems to be reading metadata. There are two main cases:com.guidewire.pl.system.database.support.H2CatalogSupport.columnExists(H2CatalogSupport.java:81)com.guidewire.pl.system.database.upgrade.BeforeUpgradeColumnImpl.getTypeRepresentationInDatabase(BeforeUpgradeColumnImpl.java:478)I'm not sure what queries are run, I will try to find out.It doesn't look related to MVStore or MVCC, but maybe there was a change that made it slower. Are you sure it is faster without MVStore? What happens if you append ";mv_store=false" to the database URL, and try with the latest version?Regards,
We are testing the latest H2 version (from a recent nightly build, actually) in place of a rather ancient but serviceable version 1.2. We are seeing performance degradation of at least a factor of 6. We have suites of test. I can supply you with comparison timings, but for example a suite that takes 20 minutes on the old H2 is timing out after 3 hours. If we don't need MVCC for a suite, we could run it without it. Will that recover the lost time? (That's an experiment I will run later.) We want to take advantage of MVCC (and DBStore) for some integration suites where we hope it will prevent deadlocks. Let me know if you need more details, or if you can respond with general comments about expected performance.
--
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 h2-database+unsubscribe@googlegroups.com.
To post to this group, send email to h2-da...@googlegroups.com.
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.
--
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 h2-database+unsubscribe@googlegroups.com.