On Aug 9, 2010, at 12:07 PM, Dan Kennedy wrote:

>
> On Aug 9, 2010, at 11:30 AM, David Barrett wrote:
>
>> I'm reading up on the new write-ahead logging feature, and I'm  
>> unclear
>> on one point: does WAL only help alleviate multi-threaded locking (by
>> allowing other threads to continue reading while one is writing), or
>> does WAL also help between multiple processes?
>>
>> My understanding could be completely wrong, but I think the following
>> statements are true -- can you help fact check me?  (I've read
>> http://www.sqlite.org/lockingv3.html but it doesn't seem to have been
>> updated for WAL -- assuming any updates are even needed.)
>>
>> 1) Two processes can read from the same database at the same time.
>>
>> 2) However, one process cannot read from the database while another  
>> is
>> writing -- WAL is irrelevant here.
>>
>> 3) One process can have two threads that read from the database from
>> the
>> same time.
>>
>> 4) And thanks to WAL, now one process can have one thread writing and
>> any number of threads reading at the same time.
>>
>> 5) However, WAL does not allow multiple threads to write at the same
>> time.
>>
>> Is this right?  Or am I totally off?  Are there any good pages
>> outlining
>> the intersection between multi-process database locking and WAL?
>> Thanks!
>
> Unless shared-cache mode is turned on, multiple threads each using
> their own sqlite3* connection should behave in the same way as
> multiple processes do wrt to sqlite locking.

I should be clearer: The above was meant to imply that (2)
is not a true statement. The others are all correct.

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to