Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Christian MICHON
This script is to initialize the db and test only once the CTE query. If you just do this with one user and no volume, the difference of performance is difficult to notice. You might notice something if your system is under heavy cpu or io load. The measurement of CTE is done by the jmx file

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
I wrote and run a simple 4-thread test with 4 connections and 4 prepared statements with values from population.csv. I tested all values distributed between these threads (All) and also 10,000 randomly selected values per thread (Random). Measured times in seconds are average times between

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Noel Grandin
@Evgenij looks like the way it works is to open the .jmx file in Apache JMeter https://jmeter.apache.org/ and run the test plan -- 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,

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Christian MICHON
You would need to build a thread engine sending these queries through jdbc. Not impossible. I used JMeter as it's a java product already available I use on daily basis. -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Christian MICHON
Correct -- 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+unsubscr...@googlegroups.com. To post to this group, send email to

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
We need code that can be profiled directly with any suitable tool. But not the third-party environment that does something with the web interface of H2. It looks like population.csv contains the identities that should be passed to the provided query, but I'm not sure. -- You received this

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Christian MICHON
No. It's the init.sql that populates the db. JMeter only opens the pre-existing populated db, and then indeed run CTE for all IDs in population.csv. I wish it could have been in a shape of an automated testscase, but it's not. This one highlights the performance issue only. I will try to do

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Noel Grandin
what do your test results look like with 200 threads? I'm guessing Christian's test case is mostly testing contention on hot locks. -- 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

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
We need a standalone test case (Java/SQL only) for further investigation. -- 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

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Noel Grandin
>From reading the .jmx file, it looks like JMeter will populate the database from the CSV file, and then run a query (specified inside the JMX file) from multiple simultaneous threads. Should be able to run a profiler on the H2 instance while the JMeter test is running. Not as nice as standalone

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Christian MICHON
Are you doing 1 times a CTE or just a simple SELECT? 200 users concurrency is needed else indeed some versions will feel similar. I also built a ramp up of 4 seconds. It's a steep ramp up but allows to measure how h2 recovers from sudden increase of traffic. I would like to emphasise that

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
I used the same query as in you test case. I can repeat the test with 200 threads. -- 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

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
With 200 threads both 1.4.197 and 1.4.199 work about 6–7 times slower than 1.4.196. -- 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

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
Previous message was truncated, so check the attachment. -- 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+unsubscr...@googlegroups.com. To post to

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
I run a git bisect. https://github.com/h2database/h2database/commit/7977b90bd13e9088a3dc1ed8b60efb2699e97724 is the first slow commit. It was merged in https://github.com/h2database/h2database/pull/640 -- You received this message because you are subscribed to the Google Groups "H2 Database"

Re: [h2] Re: Recent drops in performance

2019-05-04 Thread Evgenij Ryazanov
org.h2.table.TableView.destroyShadowTableForRecursiveExpression (boolean, org.h2.engine.Session, org.h2.table.Table) calls org.h2.engine.Session.removeLocalTempTable (org.h2.table.Table) that calls org.h2.engine.Database.lockMeta (org.h2.engine.Session) We have a bottleneck here. -- You