concepto · intermedio · 2 min de lectura
Niveles de Aislamiento
Los niveles de aislamiento definen qué tan separadas están las transacciones concurrentes entre sí, equilibrando consistencia contra rendimiento: cuanto más aisladas, menos anomalías pero menor concurrencia.
No requiere conocimientos previos.
Alcance en breve
Cubre
- Niveles de Aislamiento as a concept
No cubre
- implementation details
Supone
- The reader understands relevant fundamentals.
Resumen
El aislamiento en ACID no es binario —aislado o no—. Es un espectro definido por el estándar SQL en cuatro niveles, cada uno previniendo ciertas anomalías de concurrencia a cambio de más locks y menos rendimiento:
- Read Uncommitted: una transacción puede leer datos no commiteados de otra —dirty read—. Máximo rendimiento, mínima consistencia.
- Read Committed: solo lee datos commiteados. Previene dirty reads pero permite non-repeatable reads —la misma query dentro de una transacción puede devolver resultados distintos—.
- Repeatable Read: la misma query devuelve los mismos resultados. Previene dirty reads y non-repeatable reads, pero permite phantom reads —aparecen filas nuevas que cumplen la condición—.
- Serializable: las transacciones se ejecutan como si fueran secuenciales. Sin anomalías, pero con el menor rendimiento y mayor riesgo de deadlocks.
Alcance y supuestos
Cubre los cuatro niveles de aislamiento del estándar SQL y las anomalías que cada uno previene. Asume familiaridad con transacciones.
Modelo mental
Cuatro niveles de privacidad en una oficina. Read Uncommitted: todos ven lo que escribís en tiempo real. Read Committed: solo ven lo que ya guardaste. Repeatable Read: una vez que abrís un documento, nadie puede modificar lo que estás leyendo. Serializable: solo una persona puede usar la oficina por vez.
Uso práctico
- ✅ Read Committed es el default en PostgreSQL y SQL Server —buen balance—.
- ✅ Serializable para transferencias bancarias.
- ❌ Read Uncommitted casi nunca es aceptable en producción.
Ejemplo trabajado: phantom read
Una transacción cuenta usuarios activos —50—. Otra transacción inserta un usuario nuevo y commitea. La primera transacción vuelve a contar y encuentra 51 usuarios —phantom read—. Con Serializable, la segunda transacción espera a que la primera termine.
Evidencia
- El estándar SQL define los cuatro niveles. PostgreSQL implementa Serializable con Serializable Snapshot Isolation (SSI).
Fuentes citadas
- Wikipedia, ACID (Síntesis, 21-07-2026)