Stress testing an embedded database
Our agent uses an embedded database for storing intermediate state. The database is being continuously written to in order to backup the state in case the agent is restarted. We are currently using the Firebird embedded database, which replaced SQLITE, which turned out to perform poorly in a highly concurrent environment of the agent.
However, Firebird is not without its glitches. As we step up with our tests, we start seeing Access Violation exceptions and deadlock reports in the log (whoever is interested in stack traces may view them here - http://tracker.firebirdsql.org/browse/CORE-3207 and http://tracker.firebirdsql.org/browse/CORE-3209)
Their support is very responsive, however it is difficult for me to strip down our scenari开发者_StackOverflowo to a bare minimum code sample that crashes the database.
My question - does anyone know of a simple tool to stress test an embedded database really fast?
Thanks a lot in advance to all the good Samaritans out there.
P.S.
Please, do not suggest to write it myself - I am pretty aware of this option and prefer to download something ready instead.
Firebird is part of a benchmark test suite that you can find here. It doesn't test multithreaded access which may be want you need. Any database will need to allow only one updater at a time at some granularity. It could be one per database or one per page or one per object. You may need to redisgn your app so that multiple threads don't stomp on each other. If you are looking for better performance, check out VelocityDB, here compared with Firebird.
精彩评论