Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Aislamiento. Niveles de Lectura Repetible y Serializable | Acid
Técnicas Avanzadas en SQL

bookAislamiento. Niveles de Lectura Repetible y Serializable

Lectura Repetible

El nivel de aislamiento Lectura Repetible en bases de datos garantiza que, al iniciar una transacción, se visualiza una instantánea de la base de datos que permanece igual durante toda la operación.
Esto significa que, aunque se realicen otros cambios en la base de datos mientras se trabaja, solo se visualizarán los datos tal como estaban al comenzar.
Las transacciones bajo el aislamiento de Lectura Repetible mantienen bloqueos de lectura en todas las filas que consultan y bloqueos de escritura en las filas que insertan, actualizan o eliminan. Esto previene actualizaciones perdidas, lecturas sucias y lecturas no repetibles.
Sin embargo, existe un problema que aún puede ocurrir con este tipo de aislamiento: el fantasma de lectura.

Fantasma de lectura

El fantasma de lectura puede ocurrir cuando una transacción está leyendo datos y otra transacción agrega nuevos registros a la base de datos. Como resultado, se pueden obtener conjuntos de resultados diferentes en dos lecturas consecutivas.

Lectura no repetible vs fantasma de lectura

La lectura no repetible ocurre cuando la misma consulta ejecutada por el Usuario A devuelve valores diferentes para la misma fila entre lecturas consecutivas, generalmente debido a modificaciones realizadas por el Usuario B.

El fantasma de lectura, en cambio, sucede cuando la misma consulta ejecutada por el Usuario A devuelve conjuntos de filas diferentes entre lecturas consecutivas, aunque las filas individuales no hayan sido actualizadas.

Podemos especificar este nivel de aislamiento en nuestra consulta SQL utilizando el siguiente comando:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

El nivel de aislamiento Serializable es el nivel más alto de aislamiento en bases de datos, garantizando la forma más estricta de control de concurrencia.
En este nivel, las transacciones se ejecutan como si fueran procesadas de forma serial, una tras otra, aunque en realidad puedan ejecutarse concurrentemente. Esto asegura que el resultado de las transacciones sea el mismo que si se ejecutaran en algún orden serial, manteniendo la consistencia y evitando todas las anomalías de concurrencia conocidas.

Nota

El uso de este tipo de aislamiento puede llevar a una disminución del rendimiento debido al aumento de bloqueos.

Podemos utilizar la siguiente sentencia para establecer este nivel de aislamiento en nuestra consulta SQL:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Relaciona los niveles de aislamiento con sus descripciones.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 7

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 4.35

bookAislamiento. Niveles de Lectura Repetible y Serializable

Desliza para mostrar el menú

Lectura Repetible

El nivel de aislamiento Lectura Repetible en bases de datos garantiza que, al iniciar una transacción, se visualiza una instantánea de la base de datos que permanece igual durante toda la operación.
Esto significa que, aunque se realicen otros cambios en la base de datos mientras se trabaja, solo se visualizarán los datos tal como estaban al comenzar.
Las transacciones bajo el aislamiento de Lectura Repetible mantienen bloqueos de lectura en todas las filas que consultan y bloqueos de escritura en las filas que insertan, actualizan o eliminan. Esto previene actualizaciones perdidas, lecturas sucias y lecturas no repetibles.
Sin embargo, existe un problema que aún puede ocurrir con este tipo de aislamiento: el fantasma de lectura.

Fantasma de lectura

El fantasma de lectura puede ocurrir cuando una transacción está leyendo datos y otra transacción agrega nuevos registros a la base de datos. Como resultado, se pueden obtener conjuntos de resultados diferentes en dos lecturas consecutivas.

Lectura no repetible vs fantasma de lectura

La lectura no repetible ocurre cuando la misma consulta ejecutada por el Usuario A devuelve valores diferentes para la misma fila entre lecturas consecutivas, generalmente debido a modificaciones realizadas por el Usuario B.

El fantasma de lectura, en cambio, sucede cuando la misma consulta ejecutada por el Usuario A devuelve conjuntos de filas diferentes entre lecturas consecutivas, aunque las filas individuales no hayan sido actualizadas.

Podemos especificar este nivel de aislamiento en nuestra consulta SQL utilizando el siguiente comando:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Serializable

El nivel de aislamiento Serializable es el nivel más alto de aislamiento en bases de datos, garantizando la forma más estricta de control de concurrencia.
En este nivel, las transacciones se ejecutan como si fueran procesadas de forma serial, una tras otra, aunque en realidad puedan ejecutarse concurrentemente. Esto asegura que el resultado de las transacciones sea el mismo que si se ejecutaran en algún orden serial, manteniendo la consistencia y evitando todas las anomalías de concurrencia conocidas.

Nota

El uso de este tipo de aislamiento puede llevar a una disminución del rendimiento debido al aumento de bloqueos.

Podemos utilizar la siguiente sentencia para establecer este nivel de aislamiento en nuestra consulta SQL:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

question-icon

Relaciona los niveles de aislamiento con sus descripciones.

Read Uncommitted:
Read Committed:

Repeatable Read:

Serializable:

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 7
some-alt