I am currently writing software that will be shipped directly to consumers, and have SQLite embedded.
The application is multi-threaded and I have: Reader-Writer Thread: begin transaction; write; write; read; write; read; end transaction; rinse-repeat Reader Thread: read; read; read For several reasons, it is important to me that one thread continuously writes and reads while another thread continuously reads. In order to get decent write performance while in FULL synchronous mode, I have as many as hundreds of pending writes committed in a single transaction. This gets me terrific write performance, but the reader thread doesn't see any of the pending data until the transaction is actually committed. If I put the database in synchronous NORMAL or synchronous OFF mode, then write performance gets a lot better and I can use autocommit transactions... but then the database is considerably more sensitive to OS crashes and power failure. This is actually okay for me as long as I can reliably detect that the database file is corrupt. Failure is okay, but byzantine failure is not. Does SQLite detect database corruption? If so, what kind of corruption is detected and how does it do so? Wilson