Snapshot Isolation en SQL

Snapshot Isolation en SQL

Snapshot isolation esta basado en row versioning, el cual da consistencia de lectura siguiendo una cadena de versiones que contienen las rows comprometidas de datos.

Esta cadena está situada en una version separada de almacenamiento alojada en tempdb. Varias versiones comprometidas de rows individuales de datos son creados
durante la ejecución del UPDATE statement y recuperados por la operación SELECT a través de las consultas del snapshot. Las consultas Snapshot son consultas que corren bajo el snapshot isolation que lee los datos de snapshot.

El SQL Server 2005 incluye una nueva transacción de isolation level llamada snapshot. Snapshot isolation permite a los usuarios leer previamente valores de datos usando una
vista consistente transaccionalemente de la base de datos. En este isolation level, los
lectores no bloquean otros lectores y escritores que están accediendo al mismo dato.
Similarmente, los escritores no bloquean a los lectores. La operación de escritura en el
snapshot isolation level esta basada en un mecanismo de bloqueo con detector de conflicto aumamatico. El mecanismo de detección de conflictos evita que un usuario
haga cambios basados en datos que otro usuario haya cambiado.

Administración de snapshot isolation

Los Administradores pueden habilitar o no la snapshot isolation en una base de datos poniendo la opcion ALLOW_SNAPSHOT_ISOLATION en ON u OFF en una statement CREATE DATABASE o ALTER DATABASE. El siguiente ejemplo muestra como habilitar la snapshot isolation:
ALTER DATABASE AdventureWorks
SET ALLOW_SNAPSHOT_ISOLATION = ON

Cuando la snapshot isolation esta habilitada, las aplicaciones que quieran usarla deben setear el isolation level transaccional a SNAPSHOT para conectarse, según se indica en el siguiente ejemplo:
SET TRANSACTION ISOLATION LEVEL SNAPSHOT

Statements ejecutados en transacciones luego usaran snapshot isolation.

 

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *