Read Committed
Summary: The most basic level of transaction isolation, providing two guarantees: no dirty reads and no dirty writes.
Sources: chapter7
Last updated: 2026-04-17
Read committed is a very popular isolation level and is the default setting in many databases like PostgreSQL and Oracle (source: chapter7).
Guarantees
No Dirty Reads
A transaction must only see data that has been committed. It should not see “dirty” (uncommitted) data from other transactions. This prevents a transaction from seeing a partially updated state or data that might later be rolled back (source: chapter7).
No Dirty Writes
If two transactions concurrently try to update the same object, the second write must wait until the first transaction has committed or aborted. This prevents a transaction from overwriting an uncommitted value (source: chapter7).
Implementation
Most databases prevent dirty writes by using row-level locks. To prevent dirty reads, most databases (with some exceptions like older versions of Oracle) remember both the old committed value and the new value set by the transaction that currently holds the write lock. While the transaction is ongoing, any other transactions are given the old value (source: chapter7).