Hello,

I am working on a project in c# using the sqlite .NET wrapper from
sourceforge (http://sourceforge.net/proojects/adodotnetsqlite).  I'm
seeing lots of locking exceptions and was wondering if that was to be
expected given the scenario.

I have multiple threads accessing the database, averaging 2 writes per
second (with occasional bursts of 10 per second) and occasional reads
from other threads. Updating to sqlite v 3.2.2  reduced the frequency
of  lock errors significantly, but I am still seeing some locking
issues. During an 8 minute test in which 540 records were written I got
4 database lock errors, they seem to be in pairs so let's say 2
independent lock errors that occurred about 2 minutes apart. At the end
of the test while there were still records being written I performed
actions that caused SELECT statements to be executed in close proximity.
This caused 2 database lock issues also.

I have tried the following to alleviate the lock problems but am still
having them

- Having the .NET wrapper set pragma synchronous to "off" when opening a
connection: still getting lock issues
- Sending a pragma synchronous="off" command through the connection each
time one is opened: reduces locked database errors even further
- Increased the command timeout to 5 sec (what I understand to be the
amount of time the command will retry if a lock is encountered)

This seems like more locking than I would expect.   Is this normal
sqlite behavior or these unusual results indicating something
incorrectly implemented in my project?

Thank you
Twinkle

Reply via email to