Aislamiento transaccional

El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres hechos que deben ser tenidos en cuenta entre transacciones concurrentes. Estos hechos no deseados son:

lecturas "sucias"

Una transacción lee datos escritos por una transacción no esperada, no cursada.

lecturas no repetibles

Una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados por una transacción cursada.

lectura "fantasma"

Una transacción vuelve a ejecutar una consulta, devolviendo un conjuto de filas que satisfacen una condición de búsqueda y encuentra que otras filas que satisfacen la condición han sido insertadas por otra transacción cursada.

Los cuatro niveles de aislamiento y sus correspondientes acciones se describen más abajo.

Tabla 1. Niveles de aislamiento de Postgres

  Lectura "sucia" Lectura no repetible Lectura "fantasma"
Lectura no cursada Posible Posible Posible
Lectura cursada No posible Posible Posible
Lectura repetible No posible No posible Posible
Serializable No posible No posible No posible
Postgres ofrece lectura cursada y niveles de aislamiento serializables.