Transactions, blocks & Deadlocks SQL Server -Part 2

Buenas acá estoy con la segunda entrega para seguir refrescando conceptos de transacciones in SQL server. Hoy vamos a hablar de:
ISOLATION LEVEL: READ UNCOMMITTED.

Podemos decir que las características de este nivel de aislamiento son las siguientes:
No realiza un shared lock por lectura lo que mejora el rendimiento pero puede afectar la integridad ya que pueden existir lecturas sucias, no repetibles y fantasmas.

Permite leer datos NO confirmados de cualquier transacción.

Entonces si existen otras transacciones modificando X registros y todavía NO realizaron el commit de esos cambios, este nivel al hacer un select devolvería esos X registros ya que NO le importa que estén confirmados.

Ahora bien, vamos a la práctica!
Let’s begin!
Primero recordemos el estado nuestra tabla:

Bien, para este Test vamos a hacer la siguiente secuencia:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

1 BEGIN TRANSACTION T1
2BEGIN TRANSACTION T2
3 INSERT INTO House VALUES (‘Robert’’s house’’)
4 SELECT * FROM House
5 COMMIT TRANSACTION T2
6 ROLLBACK TRANSACTION T1

Análisis paso a paso:

  1. Inicia transacción T1.
  2. Inicia T2.
  3. T1 Inserta un nuevo registro en House pero NO está confirmado aún.
  4. T2 hace un select de House y lista todos incluyendo registros NO confirmados DIRTY READ
  5. Finaliza T2.
  6. T1. Deshace todos los cambios por lo tanto se anula el insert.

Emulemos esto en SQL:

Podemos ver como T2 hace una lectura sucia mostrando a “Robert’s House” aunque dicho registro NO estaba confirmado por T1

Estado de la tabla luego de correr las transacciones:

Notemos como Robert’s House NO esta debido a que la Transacción T1 hizo un rollaback de dicho insert.

Les dejo el código para emular este test:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

BEGIN TRANSACTION T1
INSERT INTO House VALUES (‘Robert”s House’);

WAITFOR DELAY ‘000:00:10’

ROLLBACK TRANSACTION T1
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

BEGIN TRANSACTION T2

SELECT * FROM House

COMMIT TRANSACTION T2



Bien, espero que les haya gustado el articulo!
La próxima semana publicare el de Read Committed!

Saludos!
FM