If option (b), using a single thread for writing and a multi-threaded write queue works in your situation, then that would probably provide best concurrency and performance. The only downside to this is the delayed writes mean you don't as easily get feedback to the original writer if a write fails (bad data for example). You could build delayed feedback/callback into the system, just depends on your application architecture.
Also, I would strongly suggest doing some actual testing and confirming there is a bottleneck without any custom code to increase concurrency before programming workarounds for an expected problem. What we've found is that SQLite is so much faster than other databases (MSSQL in particular) that concurrency is greatly improved simply because each write is faster and thus the time the db is locked is less even though the whole db is locked. HTH, Sam ------------------------------------------- We're Hiring! Seeking a passionate developer to join our team building products. Position is in the Washington D.C. metro area. If interested contact [EMAIL PROTECTED] -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Friday, June 01, 2007 5:18 AM To: sqlite-users@sqlite.org Subject: [sqlite] Concurrency Hi, I am having a scenario where I have one reader/writer and many writer threads. All writers are pretty basic (single INSERT INTO; some sort of a logging info what a thread has done). I believe I will receive many BUSY return codes and I don't like these spinlock-like retries. The problem I am having with this design is that I would like to complete the thread ASAP, so that I don't have many threads idling and consuming resources of my embedded system. I was thinking to either: a. Use mutex/semaphore before writting to the database or b. Have a (thread safe) list of INSERT INTO strings that every writer thread populates and the main reader/writer thread later executes. Is this a good approach? Does anyone have a better design? I don't want to use other database, because I think Sqlite is great for an embedded system that I am using. ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------