Los niveles de aislamiento de transacciones en DBMS ayudan a superar los problemas de concurrencia, como la lectura sucia, la lectura fantasma y la lectura no repetible. Tanto los niveles de aislamiento de instantáneas como los serializables se consideran los niveles de aislamiento más altos, ya que ambos evitan todos los problemas de simultaneidad, pero de maneras bastante diferentes.
Aislamiento de instantáneas:
«Instantánea», como sugiere el nombre, permite que las transacciones que ocurren simultáneamente vean la misma instantánea o copia de la base de datos que tenía al comienzo de las transacciones. Por lo tanto, permitir que una segunda transacción realice cambios en los datos que otra transacción concurrente iba a leer. Esta otra transacción no observaría los cambios realizados por la segunda transacción y continuaría trabajando en la instantánea anterior de la base de datos.
Serializable:
Las transacciones que siguen a una ejecución serializable, aunque se ejecutan simultáneamente, aparecen como si se estuvieran ejecutando en un orden en serie. Serializable hace uso de bloqueos para operaciones de lectura y escritura en transacciones. Un bloqueo se asegura de que ninguna otra transacción concurrente pueda modificar los datos utilizados por la transacción que mantiene el bloqueo hasta que se complete.
Diferencia entre aislamiento de instantánea y serializable:
S. No. |
Aislamiento de instantáneas |
Serializable |
---|---|---|
1. | En Snapshot, el servidor SQL evita los bloqueos al utilizar el control de versiones de filas. | En Serializable, el servidor SQL utiliza bloqueos y los retiene hasta que la transacción se confirma o cancela. |
2. | Sigue el control de concurrencia optimista. | Sigue el control de concurrencia pesimista. |
3. | El nivel de concurrencia es alto en comparación con serializable. | Se logra un bajo nivel de simultaneidad ya que una transacción debe esperar a que se complete otra transacción. |
4. | Dado que no se imponen bloqueos a los datos cuando se leen, se permite que otras transacciones simultáneas escriban datos al mismo tiempo sin ningún conflicto. | Si dos transacciones intentan leer y escribir datos al mismo tiempo, se produce un interbloqueo y una de las transacciones se cancela o revierte como víctima del interbloqueo. |
5. | Si dos transacciones intentan actualizar el mismo registro al mismo tiempo, se produce un conflicto de actualización y el servidor SQL tuvo que eliminar una de las transacciones. | Si dos transacciones intentan actualizar el mismo registro, la segunda transacción esperará a que la primera transacción se revierta o confirme. |