Aislamiento. Niveles de Lectura Confirmada y No Confirmada
En el contexto de las bases de datos, la aislación se refiere a la capacidad de un sistema de bases de datos para controlar la visibilidad de los cambios realizados por transacciones concurrentes. Garantiza que las transacciones operen de manera independiente entre sí, evitando interferencias y manteniendo la integridad de los datos.
Existen 4 niveles de aislación en SQL:
- read uncommitted;
- read committed;
- repeatable read;
- serializable.
Read uncommitted
Este es el nivel de aislación más bajo, donde las transacciones pueden ver los cambios realizados por otras transacciones incluso antes de que se confirmen. Este nivel permite lecturas sucias, lo que significa que una transacción puede leer datos que han sido modificados por otra transacción pero que aún no han sido confirmados.
Lecturas sucias
Implementación
Para especificar el nivel de aislación para la transacción, podemos utilizar el siguiente comando en nuestra consulta:
-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
/* Transaction query */
COMMIT;
-
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
: Esta sentencia cambia el nivel de aislación para la transacción actual a "Read Uncommitted", permitiendo que la transacción potencialmente lea datos modificados por otras transacciones no confirmadas; -
este comando debe usarse solo dentro del bloque de la transacción. De lo contrario, no tendrá efecto y se utilizará el nivel de aislación predeterminado.
También podemos verificar el nivel de aislación actual utilizando el siguiente comando:
SHOW TRANSACTION ISOLATION LEVEL;
Read committed
El nivel de aislación Read Committed garantiza que una transacción solo vea los datos que han sido confirmados por otras transacciones.
Esto significa que los cambios no confirmados realizados por otras transacciones no son visibles para las transacciones que operan bajo Read Committed.
Como resultado, previene las lecturas sucias al permitir que una transacción lea solo datos confirmados. Sin embargo, este nivel de transacción presenta problemas con lecturas no repetibles.
Lecturas no repetibles
El nivel de aislamiento "Read committed" permite lecturas no repetibles porque bloquea la operación de lectura sobre valores que están en proceso de transacciones no confirmadas, pero no bloquea la operación de escritura.
Como resultado, es posible escribir nuevos datos en la fila que está siendo leída por otra transacción.
Actualización perdida
Debido a la ausencia de bloqueo de escritura, existe un problema adicional con el nivel de aislamiento read committed: actualizaciones perdidas.
Las actualizaciones perdidas ocurren cuando dos transacciones paralelas intentan modificar la misma fila. Como resultado, la transacción que se confirma más tarde sobrescribe los valores confirmados por otras transacciones.
Implementación
También podemos especificar este nivel de aislamiento utilizando los siguientes comandos:
-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
/* Transaction query */
COMMIT;
Es importante notar que Read Committed es el nivel de aislamiento predeterminado para la mayoría de los Sistemas de Gestión de Bases de Datos, por lo que podemos omitir especificarlo.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What are the other two isolation levels besides Read Uncommitted and Read Committed?
Can you explain what repeatable read and serializable isolation levels are?
How do non-repeatable reads and lost updates affect data consistency?
Awesome!
Completion rate improved to 4.35
Aislamiento. Niveles de Lectura Confirmada y No Confirmada
Desliza para mostrar el menú
En el contexto de las bases de datos, la aislación se refiere a la capacidad de un sistema de bases de datos para controlar la visibilidad de los cambios realizados por transacciones concurrentes. Garantiza que las transacciones operen de manera independiente entre sí, evitando interferencias y manteniendo la integridad de los datos.
Existen 4 niveles de aislación en SQL:
- read uncommitted;
- read committed;
- repeatable read;
- serializable.
Read uncommitted
Este es el nivel de aislación más bajo, donde las transacciones pueden ver los cambios realizados por otras transacciones incluso antes de que se confirmen. Este nivel permite lecturas sucias, lo que significa que una transacción puede leer datos que han sido modificados por otra transacción pero que aún no han sido confirmados.
Lecturas sucias
Implementación
Para especificar el nivel de aislación para la transacción, podemos utilizar el siguiente comando en nuestra consulta:
-- Start transaction
BEGIN;
-- Set the isolation level for the transaction
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
/* Transaction query */
COMMIT;
-
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
: Esta sentencia cambia el nivel de aislación para la transacción actual a "Read Uncommitted", permitiendo que la transacción potencialmente lea datos modificados por otras transacciones no confirmadas; -
este comando debe usarse solo dentro del bloque de la transacción. De lo contrario, no tendrá efecto y se utilizará el nivel de aislación predeterminado.
También podemos verificar el nivel de aislación actual utilizando el siguiente comando:
SHOW TRANSACTION ISOLATION LEVEL;
Read committed
El nivel de aislación Read Committed garantiza que una transacción solo vea los datos que han sido confirmados por otras transacciones.
Esto significa que los cambios no confirmados realizados por otras transacciones no son visibles para las transacciones que operan bajo Read Committed.
Como resultado, previene las lecturas sucias al permitir que una transacción lea solo datos confirmados. Sin embargo, este nivel de transacción presenta problemas con lecturas no repetibles.
Lecturas no repetibles
El nivel de aislamiento "Read committed" permite lecturas no repetibles porque bloquea la operación de lectura sobre valores que están en proceso de transacciones no confirmadas, pero no bloquea la operación de escritura.
Como resultado, es posible escribir nuevos datos en la fila que está siendo leída por otra transacción.
Actualización perdida
Debido a la ausencia de bloqueo de escritura, existe un problema adicional con el nivel de aislamiento read committed: actualizaciones perdidas.
Las actualizaciones perdidas ocurren cuando dos transacciones paralelas intentan modificar la misma fila. Como resultado, la transacción que se confirma más tarde sobrescribe los valores confirmados por otras transacciones.
Implementación
También podemos especificar este nivel de aislamiento utilizando los siguientes comandos:
-- Start transaction
BEGIN;
-- Set the isolation level for the session
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
/* Transaction query */
COMMIT;
Es importante notar que Read Committed es el nivel de aislamiento predeterminado para la mayoría de los Sistemas de Gestión de Bases de Datos, por lo que podemos omitir especificarlo.
¡Gracias por tus comentarios!