Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NACIONAL
PEDRO RUIZ GALLO
FACULTAD DE CIENCIAS FSICAS Y MATEMTICAS
Escuela Profesional de
Ingeniera en
Computacin e Informtica
Niveles de Aislamiento
SQL Server
DOCENTE :
LEIVA CASTILLO, Martn Manuel
CURSO
:
Conectividad
ALUMNA :
Cristian Yamil Molina Lpez (071722-J)
Mayo 2013
SQL Server 2005 ofrece seis niveles de aislamiento diferentes, que podemos agrupar en:
READ UNCOMMITTED.
READ COMMITTED.
REPEATABLE READ.
SERIALIZABLE.
Niveles de Aislamiento basados en versionado de filas (row versioning similar a ORACLE). Desde SQL Server 2005 estn disponibles dos nuevos
niveles de aislamiento: READ COMMITTED SNAPSHOT y SNAPSHOT.
Estos dos nuevos niveles de aislamiento se basan en el versionado de filas (row
versioning). Una de las principales razones de utilizar el versionado de filas (row
versioning) es minimizar los bloqueos ocurridos en la base de datos, con el fin
de obtener un mejor rendimiento (las operaciones de lecturas, slo establecern
bloqueos compartidos de esquema a nivel de tabla, y NO bloquearn filas ni
pginas de datos). Siempre que una transaccin modifica un fila en uno de
los modos de aislamiento de versionado de filas, SQL Server 2005 utiliza
TEMPDB para almacenar una copia de la fila con el valor original y el
nmero de secuencia de la transaccin. En caso de que mltiples
transacciones modifiquen la misma fila, se almacena en TEMPDB una cadena
de valores de la fila. Las operaciones de lectura podrn acceder a la versin
apropiada de cada fila (accediendo a TEMPDB si es necesario) para as obtener
datos congruentes sin necesidad de generar bloqueos. Para que encontremos ms
familiar el uso del versionado filas (row versioning), resulta de inters saber que
SQL Server 2005 saca provecho del versionado de filas (row versioning) en el
funcionamiento de las tablas virtuales inserted y deleted de los triggers, en las
operaciones de ndice con la clusula ONLINE, etc.
Tanto para comprender bien los modos de aislamiento basados en bloqueos, como para
comprender los modos de aislamiento basados en versionado de filas, es muy
importante tambin comprender bien los conceptos de lecturas sucias (dirty reads),
lecturas no repetibles (non repeatable reads) y lecturas fantasma (phantom reads).
Estos conceptos se explican un poco ms adelante.
State 51, Line 1. Lock request time out period exceeded.). Tambin es posible conocer
el actual tiempo de espera por bloqueo, consultando el valor de la funcin del
sistema @@LOCK_TIMEOUT.
A continuacin se describen los dos posibles niveles de aislamiento basados en
versionado de filas (row versioning).
SNAPSHOT. Evita los problemas de las lecturas sucias (dirty reads), de las
lecturas no repetibles (non repeatable reads), y de las lecturas fantasma
(phantom reads). Sin embargo, en vez de realizar un uso intensivo de bloqueos,
su funcionamiento se basa en el almacenamiento de versiones de filas en
TEMPDB. Si una transaccin empieza en un momento del tiempo determinado,
slo ser capaz de acceder a la informacin de la base de datos que era real en
aquel momento del tiempo. Por ello, es posible que existan mltiples versiones
de la misma fila en TEMPDB, con el fin de servir a mltiples transacciones.
Debido al impacto que tiene este modo de aislamiento sobre la base de datos del
sistema TEMPDB, slo es recomendable en bases de datos intensivas en lecturas
o en bases de datos con grandes problemas de bloqueos. Una situacin de
concurrencia particular de ste modo de aislamiento es el caso de los conflictos
de actualizacin (update conflicts): Si una fila es leda en una transaccin, y
posteriormente como parte de la misma transaccin es modificada, PERO entre
la lectura inicial y la posterior modificacin ha sido alterada por otra
transaccin, se produce un conflicto de actualizacin (update conflict), que
implica un mensaje de error 3960 (Msg 3960, Level 16, State 4 Line 1. Snapshot
isolation transaction aborted due to update conflict. You cannot use snapshot
isolation to access table 'myTable' directly or indirectly in database 'myDB' to
update, delete or insert the row that has been modified or deleted by another
transaction. Retry the transaction or change de isolation level for the
update/delete statement), y adems tambin implica que la transaccin se dehace
(Rollback).
Para activar la opcin ALLOW_SNAPSHOT_ISOLATION con la siguiente
instruccin:
la
sentencia SET
UNCOMMITTED
TRANSACTION
READ
ISOLATION
COMMITTED
LEVEL
{READ
REPEATEABLE
READ
SERIALIZABLE}.
En SQL Server 2005 se incluyen dos nuevas propiedades de base de datos
(configurables a travs del comando ALTER DATABASE). Se trata de las opciones de
base
de
datos
READ_COMMITTED_SNAPSHOT
Activar
READ_COMMITTED_SNAPSHOT
(poner
ON)
utilizar
ser
necesario
activar
la
opcin
de
base
de
datos
Activar ALLOW_SNAPSHOT_ISOLATION
(poner
ON)
utilizar
SNAPSHOT
(SET TRANSACTION
ISOLATION
LEVEL
SNAPSHOT).