I sure am glad I converted all SQL to use a BEGIN EXCLUSIVE. For some reason it struck me as odd that a SQL select could get a SQLITE_BUSY or even after you perform a single insert operation that a SQLITE_BUSY could later be thrown. Is it the delayed mechanism of the Pager Layer that provides locking upon a cache spill that causes this? I still think it should be possible to implement, multi readers and a single concurrent writer. I just don't see how though given the requirement that a reader can get sqlite_busy for a select statement. Will the new version 3.4.0 resolve this problem? Thanks Ken