(Using Delphi 2010 + latest SQLite in WAL mode)
I am using DISQLite (SQLite Delphi Port) with my multi-threaded client application (not yet released, so I can change the DB mechanism if I really need to)
My profiler explicitly says that this is a stupid solution, I traced this to 2-3 very simple SQL statements that fly when executed in a single-threaded application, but since there are lock / wait threads (SQLite really doesn't work well with multiple threads trying to write at the same time)
I did my best to optimize my code / avoid bottlenecks, but after several weeks of hard work, I now wonder if it is easier to reset SQLite and choose a different DB mechanism (?)
My requirements:
- ACID
- Very good support for simultaneous read / write (write level).
- (Very) Fast and stable database engine
- B-tree
- Support for Delphi 2010
I use only the basic INSERT / UPDATE / DELETE commands with indexes, nothing unusual. Thus, my SQL requirements are relatively basic (I don’t need joins or other “more advanced” SQL files).
I am also open to NQL solutions if it supports the above requirements.
My research leads to DB Berkley, which, if I understand correctly, a modified version of SQLite with support for parallel writing, but the problem is not that it really is not for delphi.
I also read about the Kyoto Cabinet, but then again, no delphi support :(
Any suggestion would be more than welcome,
Thanks!
source share