Transaction Isolation

PostgreSQL 7.2 Documentation
Prev | Chapter 9. Multiversion Concurrency Control | Next

# 9.2. Transaction Isolation

The ANSI/ISO SQL standard defines four levels of transaction isolation in terms of three phenomena that must be prevented between concurrent transactions. These undesirable phenomena are:

dirty reads

  A transaction reads data written by concurrent uncommitted transaction.

non-repeatable reads

  A transaction re-reads data it has previously read and finds that data has been modified by another transaction (that committed since the initial read).

phantom read

  A transaction re-executes a query returning a set of rows that satisfy a search condition and finds that the set of rows satisfying the condition has changed due to another recently-committed transaction.

The four transaction isolation levels and the corresponding behaviors are described in Table 9-1.

Table 9-1. SQL Transaction Isolation Levels

Isolation Level | Dirty Read | Non-Repeatable Read | Phantom Read
--- | --- | --- | ---
Read uncommitted | Possible | Possible | Possible
Read committed | Not possible | Possible | Possible
Repeatable read | Not possible | Not possible | Possible
Serializable | Not possible | Not possible | Not possible

PostgreSQL offers the read committed and serializable isolation levels.

Prev | Home | Next
Multiversion Concurrency Control | Up | Read Committed Isolation Level