Supported Transaction Isolation Levels

NuoDB supports several levels of transaction isolation based on its use of Multi-Version Concurrency Control (MVCC). MVCC uses multiple versions of records to provide a consistent view of the data to each transaction and to prevent concurrent transactions from overwriting each other's changes. Under MVCC, readers do not block writers, and writers do not block readers.

Note

Different NuoDB drivers support the isolation levels in different ways. Consult the documentation for each driver you are using to find which isolation levels are supported by that driver.

NuoDB supports the following transaction isolation levels:

Name of Isolation Level Description Performance Trade-offs and Comments
CONSISTENT READ This is the NuoDB default transaction isolation level. A transaction sees a snapshot of the database as it was when that transaction started plus any changes made in that transaction. CONSISTENT READ may produce more update conflicts, but provides complete isolation from changes made by other transactions. Each transaction uses its own snapshot view of the database.
WRITE COMMITTED For read operations, each transaction sees the state of the database as it was when the transaction started plus its own changes, similar to CONSISTENT READ.
For write operations, including SELECT...FOR UPDATE, UPDATE and DELETE), each transaction reads the most recently committed version of a record, similar to READ COMMITTED.
WRITE COMMITTED maintains the complete isolation of each transaction for simple SELECT statements, but can breach the isolation for SELECT … FOR UPDATE, UPDATE, and DELETE statements. In an update intensive application, WRITE COMMITTED transactions may get fewer errors when updating than CONSISTENT READ transactions.
READ COMMITTED Each transaction always reads the most recently committed version of a record. READ COMMITTED transactions offer no guarantee of isolation, but are very familiar to users of database systems that do not implement concurrency through MVCC. For applications that must run on multiple database systems, including those that are not based on MVCC, the READ COMMITTED level provides compatible behavior.
REPEATABLE READ This will cause the same behavior as CONSISTENT READ See CONSISTENT READ.
SERIALIZABLE This is kept for backward compatibility and will also cause the same behavior as CONSISTENT READ. See CONSISTENT READ.

See the following topics:

Description of NuoDB Transaction Isolation Levels

Examples of Reading Data After a Concurrent Transaction Updates Data

Examples of Selecting Data for Update After a Concurrent Transaction Updates Data

Examples of Updating a Row That is Being Updated by a Concurrent Transaction

Examples of Concurrent Updates That Do Not Overlap

JDBC Transaction Isolation Levels Supported by NuoDB