"Dan Petitt" <[EMAIL PROTECTED]> wrote: > Are there any plans for sqlite to support row or table level locking, or > possibly even Multiversion Concurrency Control, MVCC, its definition being: >
"Axel Mammes \(gmail\)" <[EMAIL PROTECTED]> wrote: > Does your flat file support ACID transactions? SQLite supports ACID transactions. The database remains consistent and transactions are atomic and durable even under the following conditions: * Your program segfaults in the middle of an update * Your operating system crashes in the middle of an update * Your computer loses power in the middle of an update SQLite does *not* assume that sector writes on a disk drive are atomic. Checksums are used to detect partial sector writes in the event of a power loss. In summary, SQLite is very much an ACID database engine. Isolation in SQLite is SERIALIZABLE. Note that SERIALIZABLE implies that locking can be no more fine-grained than table-level. You can obtain table-level locking in SQLite now. Just put each table in a separate database file and ATTACH as many tables to your connection as you require. Beginning with version 3.3.0, you will be able to configure SQLite so that multiple connections running in the same thread will be able to select READ UNCOMMITED isolation relative to one another. Note that this will only be possible for connections in the same thread - it will not be possible for connections in different threads of the same process. With READ UNCOMMITTED isolation, you can still only have a single connection writing to the database at a time, but writers will not block readers nor will readers block writers. This allows a much higher level of concurrency. -- D. Richard Hipp <[EMAIL PROTECTED]>