El nivel de aislamiento Repeatable Read (RR) está definido por el estándar SQL-92 junto a Read Uncommitted, Read Committed y Serializable, cada uno pensado para bloquear anomalías concretas: lecturas sucias, lecturas inconsistentes y fantasmas. Los sistemas modernos, sin embargo, suelen apoyarse en control de concurrencia multiversión (MVCC) y en instantáneas de lectura, lo que ha desdibujado la diferencia teórica entre RR y Snapshot Isolation (SI).
Una revisión de la literatura —desde el artículo de Berenson, Bernstein y Gray de 1995 hasta las definiciones de Adya y Liskov de 2000— muestra que ambas son más fuertes que Read Committed y más débiles que Serializable, pero no equivalentes: RR bloquea la anomalía de write skew, mientras que SI la permite y solo garantiza protección frente a fantasmas. PostgreSQL ofrece además Serializable Snapshot Isolation (SSI) sobre la base de SI.
Un experimento reproducible en MySQL InnoDB y PostgreSQL reproduce la anomalía: dos médicos que consultan quién está de guardia, deciden ambos ponerse libres y commitean, dejando la guardia vacía. El resultado, válido bajo SI, no debería ocurrir bajo RR estricto, lo que evidencia que el RR de ambos motores se comporta en la práctica como Snapshot Isolation. El texto cierra con la advertencia de que un conocido proveedor (Oracle) vendió históricamente SI como Serializable.
