Sorry, when I said mutex mode, I meant the Runtime selection of threading mode: http://sqlite.org/threadsafe.html At this point, I am sorry, I am confused with threading mode, journal mode and locking modes. My scenario: Multiple processes want to access the database. How do I configure so that I can get as much concurrency w.r.t read and write. Meaning, have multiple readers and writers. I think we are saying we can only have multiple readers and 1 writer at any point in time. Any connection that tries to write when there is already a write happening, will get SQLite_Busy. That is fine, I can handle it in my application. However, I just want to confirm, how to achieve the multi-read and 1 write scenario. My understanding: Keep threading mode to Serialized. This is the default. So I don't have to do anything. Keep the locking mode to Normal. Again, this is the default. So I don't have to do anything. Finally, the journal mode to WAL. Is this correct? Also, in WAL mode, the simple answer for why there cant be multiple writes is because you cannot have multiple pages being written at the same time in the same file. It also complicates transaction behavior, crash recovery, etc. Correct? Thanks, Kushal.
________________________________ From: Igor Tandetnik <itandet...@mvps.org> To: sqlite-users@sqlite.org Sent: Saturday, May 5, 2012 6:02 PM Subject: Re: [sqlite] Locking/Concurrency KUSHAL SHAH <adroi...@yahoo.com> wrote: > I am starting simple where I have exe1 having 1 connection and exe2 having > another connection. > Now if both of them open the connections in mutex mode, will the read/write > requests be serialized. It seems you are saying No. I'm not sure what you mean by "mutex mode" - I'm not familiar with this term. If you have multiple connections, each used by a single thread (whether in the same or different EXEs, doesn't matter), then: - in "traditional" roll-back journal mode, at any point in time the database may be accessed by multiple readers, *or* by a single writer - in WAL mode, the database may be accessed by multiple readers *and* a single writer. > If so, then what is the advantage of mutex? Like, I would expect that a > single thread connection will anyways serialize its > requests from the client. What am I missing? I don't understand the term "thread connection" either. What scenario do you have in mind, exactly? How many threads are using how many connections? Which of these threads attempt to read, and which attempt to write? > Finally, how do I enable WAL mode The documentation at http://sqlite.org/wal.html explains this in detail. > Specifically, can I do that in System.Data.SqLite client? I'm unfamiliar with this client. Hopefully, someone more knowledgeable will chime in soon. > Also, what happens when 2 connections(with mutex) try to write? Will one of > them get sqlite_busy? Yes. -- Igor Tandetnik _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users