I have an application where multiple engines perform heavy write OLTP 
transactions on a repository.  The engine supports many data stores and I 
recently added SQLite support.

WAL is great, for small single node stuff SQLite is very fast and simple.  I 
had turned of synchronous (=0), as for the use case, having to start over due 
to a corrupted database is not a big deal, but I have turned it back to normal 
mode which lessens the problem but doesn’t go away.  Due to the heavy writes I 
have a lot of contention (my busy handler works well) and I have to force 
checkpoints to keep the log under control.

Recently I removed a bunch of latency from my application.  Suddenly I’m 
getting odd errors where a record that was just inserted can’t be read by the 
same process.  In fact, even waiting till completion of the run, the record 
never exists.  I confirmed the insert is getting called with the correct 
parameters, I logged everything coming back on the error log callback, and I 
verified that the DB is always in auto commit.

What can I do to debug better?  Can checkpoint RESTART/TRUNCATE cause data loss?

Brian Macy

_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to