Sobes.tech
Middle

¿Cuáles son los tipos de aislamiento de transacciones?

sobes.tech AI

Respuesta de la IA

El aislamiento de transacciones determina qué tan bien una transacción puede ver los cambios intermedios de otras transacciones que se ejecutan en paralelo.

El estándar SQL define cuatro niveles de aislamiento:

  1. Read Uncommitted (Lectura no confirmada): El nivel más bajo. La transacción puede leer cambios no confirmados de otras transacciones (lectura sucia).
  2. Read Committed (Lectura confirmada): La transacción solo puede leer datos que han sido confirmados por otras transacciones. Evita la "lectura sucia".
  3. Repeatable Read (Lectura repetible): La transacción garantiza que los datos leídos durante la transacción no cambiarán en lecturas posteriores. Evita la "lectura sucia" y la "lectura no repetible". Pueden ocurrir "fantasmas".
  4. Serializable (Serializable): El nivel más alto de aislamiento. Garantiza que las transacciones paralelas se ejecuten como si fueran secuenciales. Evita todos los tipos de fenómenos no deseados: "lectura sucia", "lectura no repetible" y "fantasmas".

Fenómenos no deseados en la ejecución paralela de transacciones:

  • Dirty Read (Lectura sucia): La transacción A lee datos modificados por la transacción B que aún no han sido confirmados. Si la transacción B revierte los cambios, la transacción A trabajará con datos incorrectos.
  • Non-repeatable Read (Lectura no repetible): La transacción A lee los mismos datos dos veces, pero entre las lecturas, la transacción B confirma un cambio en esos datos. Como resultado, la transacción A obtiene valores diferentes en lecturas repetidas.
  • Phantom Read (Lectura de fantasmas): La transacción A realiza una consulta que devuelve un conjunto de filas. La transacción B confirma la inserción o eliminación de filas que cumplen con los criterios de la consulta A. Al volver a ejecutar la misma consulta, la transacción A obtiene un conjunto diferente de filas.

Tabla resumen de fenómenos no deseados por niveles de aislamiento:

Nivel de aislamiento Lectura sucia Lectura no repetible Fantasmas
Read Uncommitted
Read Committed No
Repeatable Read No No
Serializable No No No

La elección del nivel de aislamiento afecta el rendimiento y la corrección del funcionamiento de la aplicación. Cuanto más alto sea el nivel de aislamiento, mayores serán los costos adicionales.