-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Add performance tests for SQLite #3458
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Indeed, makes tremendous difference in SQLite performance, so now it become feasible to include it into testing.
It would be interesting to figure out what is the cause for such discrepancies. Are you running on SSD or spinning drive, how many cores in your laptop, what OS, JDK is used? Mine is quad core, hyper-threaded with SSD, Linux, Oracle JDK1.8.
BenchB is the only test in that bunch that is actually concurrent. |
SSD, MacOS, 8-core hyper-threaded, Adoptium JDK 17.0.2. Running with JDK 1.8 (I included Derby to give another datapoint),
This was very helpful! I'm not deeply familiar with SQLite, but what I found suggested that indeed, SQLite doesn't like multiple connections. It seems the recommendation is to either synchronize in Java and do all database work on a single thread, or share a single JDBC connection across multiple threads. I tried playing with SQLite busy handlers a bit, but still wasn't able to get it to play nicely with BenchB. As you said, apples to oranges. So, I'd like to do the following:
Alternatively, if the maintainers would like, I could look at updating |
|
@MariusVolkhart Items 1,2, and 3 are fine, of course. As far as updating BenchB, I am not sure what would be the purpose. It's known that some of those engines are single-user and therefore are failing this test, and yes, you can work around it with synchronization, and performance numbers will get worse. Results were published just to show that H2 performance is at least in the same range or better with other products. Test is composite and different aspects of the test can be tweaked (weighted differently) to emphasize various features, like concurrency, read, update, delete etc., so you mileage may vary. |
Configure SQLite to run in a mode comparable to H2. The performance docs are updated with approximations of SQLite performance on these tests, but not with detailed numbers.
e9a9d10 to
5483ba7
Compare
|
Docs updated, SQLite execution commented out, but support for sqlite left in place. |
Configure SQLite to run in a mode comparable to H2.
The performance docs are updated with approximations of SQLite performance on these tests, but not with detailed numbers.
Anecdotal results collected off my laptop (not a reliable benchmark) for reference. Strangely, the
BenchBtest executes 24,088 fewer statements in the SQLite run than H2, but there are no exceptions or other indicators in the run output.