Вы находитесь на странице: 1из 2

SET TRANSACTION ISOLATION LEVEL <opcion>

opcion :

READ UNCOMMITTED

Este nivel permite leer las modificaciones todavia no validadas de otras transacciones.

Este tipo de lectura se demonina “en sucio” o “dirty read”, ya que los datos visualizados
no necesariamente se conservaran en caso de que la transaccion se anule
(ROLLBACK). en este modo de funconamiento, las instrucciones DML no necesitan un
bloqueo compartido para la lectura de los datos porque nada impide la modificación de
los datos leídos, aunque la modificación no esté aún validada.

READ COMMITTED

En este solo son vivibles las modificaciones validadas (COMMIT).

Las instrucciones de DML utilizan siempre un bloqueo exclusivo. No obstante, los


bloqueos fijados para la lectura de datos se anulan cuando termina la lectura, no cuando
termina la transacción. Si se lee más de una vez la misma fila durante una misma
transacción, no está garantizada que la lectura de la misma fila devuelta siemrpe los
mismos datos.

Puede darse este caso si los datos son modificados y luego validados por otra
transacción entre las 2 operaciones de lectura.

REPEATABLE READ

En este modo de funcionamiento, los datos leídos o modificados por una transacción ya
no son accesibles para las otras transacciones, con el fin de garantizar que la lectura
repetida de una fila de datos devuelva siempre el mismo contenido.

No obstante los datos leídos siguen siendo accesibles en lectura para las demás
transacciones. Los bloqueos se definen para duración de la transacción. Con este tipo de
bloqueo se pueden agregar datos a las tablas entre el principio y fin de la transacción y
por lo tanto el conjunto de datos ya no es el mismo , este tipo de problema puede tener
una incidencia significativa cuando por ejemplo, una transacción efectúa el cálculo de
descuento sobre un monto y simultáneamente , otras transacciones añaden un dato
adicional. Este nuevo pedido modificara el resultado del cálculo del descuento.

SERIALIZABLE

Con este modo de funcionamiento, los datos leídos o modificados por la transacción
serán accesibles únicamente para esta transacción. Los datos que sólo se lean seguirán
siendo accesibles en modo lectura para las demás transacciones.

Se definen bloqueos para toda la duración de la transacción a nivel de fila de datos,


tambien se definen bloqueos a nivel más alto, en los índices para evitar que se agreguen
datos al conjunto de resultados de la transacción. Si no existe nigún indice que cubra la
consulta de lectura, es importante un bloqueo adicional a nivel de tabla.
SERIALIZABLE Las consultas de la transacción leen sólo filas
aseguradas antes de la primera instrucción DML:
(SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) que se ejecute en esta
transacción.

Вам также может понравиться