A quick introduction: I'm a software developer in Tucson AZ, and I'm a new sqlite user (version 3.4.2). I'm really very impressed with this software. Thank you very much to everyone who has contributed to it!
I have an application that requires separate processes (under Linux) to concurrently update records in some shared tables (multiple SELECTs and UPDATEs inside of a transaction). Unfortunately, when I have PRAGMA synchronous = 1 or 2, it is too slow for my needs, while synchronous = 0 is plenty fast enough. It is very likely that I *will* lose power when my application is running. When this happens, I can live with losing the last few minutes of transactions, but a corrupted database file that lost all data would cause much grief to my users (and therefore me). So my questions are: With synchronous = 0, are transactions still atomic across processes? Is running with synchronous=0 likely to non-recoverably corrupt the database file on power failure? Are there any recovery tools that can restore consistancy? I apologise if this has been answered somewhere else (an hour or two of googling didn't find anything that specifically covered synchronous = 0). Thank you in advance for any replies! Cheers, -Scott