Transaction isolation levels control how and when changes made by one transaction become visible to others, balancing consistency against concurrency.
Control how concurrent transactions interact, from weakest (read uncommitted) to strongest (serializable). Higher isolation reduces anomalies (dirty reads, non-repeatable reads, phantom reads) but can reduce concurrency and performance.
| Database System | Support Status | Since Version | Notes |
|---|---|---|---|
| MySQL | ✓ Supported | 5.0 | InnoDB supports all four standard levels: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. Default is REPEATABLE READ, which is higher than most other engines. Uses MVCC; REPEATABLE READ prevents phantom reads for consistent reads but not for locking reads. |
| PostgreSQL | ✓ Supported | 7.4 | Supports READ COMMITTED (default), REPEATABLE READ, and SERIALIZABLE. READ UNCOMMITTED is accepted as syntax but behaves as READ COMMITTED. PostgreSQL's SERIALIZABLE uses SSI (Serializable Snapshot Isolation), the strongest and most correct implementation. |
| SQL Server | ✓ Supported | 2000 | Supports all four standard levels plus two snapshot-based levels: SNAPSHOT (statement-level MVCC) and READ_COMMITTED_SNAPSHOT (row versioning for default READ COMMITTED). RCSI is enabled at the database level and changes the default READ COMMITTED behavior engine-wide. |
| Oracle | ✓ Supported | 7 | Supports READ COMMITTED (default) and SERIALIZABLE. READ UNCOMMITTED and REPEATABLE READ are not available — Oracle's MVCC architecture means dirty reads are structurally prevented. SERIALIZABLE uses snapshot isolation at transaction start. |
| SQLite | ✓ Supported | 3.0.0 | SQLite supports DEFERRED, IMMEDIATE, and EXCLUSIVE transaction modes rather than the standard four ISO levels. WAL mode provides snapshot isolation for readers. Effectively READ COMMITTED or SERIALIZABLE depending on WAL mode and transaction type. |
The four ISO levels (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) are defined in the SQL standard but implemented very differently across engines. Oracle doesn't implement READ UNCOMMITTED or REPEATABLE READ at all — its MVCC architecture makes dirty reads impossible by design, and its SERIALIZABLE is actually snapshot isolation (which can still have write skew anomalies under the formal definition). PostgreSQL's SERIALIZABLE (SSI) is the most theoretically correct implementation among these five engines. MySQL's default REPEATABLE READ is stricter than most other engines default, which surprises developers coming from PostgreSQL (READ COMMITTED). SQL Server's READ_COMMITTED_SNAPSHOT changes the entire database's default isolation behavior when enabled — a setting that's often enabled silently by ORM frameworks during database creation. SQLite's transaction modes don't map cleanly to ISO levels; WAL mode is the key configuration that unlocks concurrent reads during a write transaction.
InnoDB supports all four standard levels: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE. Default is REPEATABLE READ, which is higher than most other engines. Uses MVCC; REPEATABLE READ prevents phantom reads for consistent reads but not for locking reads.
Supports READ COMMITTED (default), REPEATABLE READ, and SERIALIZABLE. READ UNCOMMITTED is accepted as syntax but behaves as READ COMMITTED. PostgreSQL's SERIALIZABLE uses SSI (Serializable Snapshot Isolation), the strongest and most correct implementation.
Supports all four standard levels plus two snapshot-based levels: SNAPSHOT (statement-level MVCC) and READ_COMMITTED_SNAPSHOT (row versioning for default READ COMMITTED). RCSI is enabled at the database level and changes the default READ COMMITTED behavior engine-wide.
Supports READ COMMITTED (default) and SERIALIZABLE. READ UNCOMMITTED and REPEATABLE READ are not available — Oracle's MVCC architecture means dirty reads are structurally prevented. SERIALIZABLE uses snapshot isolation at transaction start.
SQLite supports DEFERRED, IMMEDIATE, and EXCLUSIVE transaction modes rather than the standard four ISO levels. WAL mode provides snapshot isolation for readers. Effectively READ COMMITTED or SERIALIZABLE depending on WAL mode and transaction type.