Como prometiamos, ha llegado el momento de ver una demostración sobre los niveles de aislamiento y sus repercusiones. En la demostración vamos a demostrar cuando se genera un bloqueo, vamos a ver el tema de lecturas repetibles y que significa y vamos a comprobar la diferencia entre read_commited_snapshot y snapshot isolation level
El siguiente script es el script de iniciación de los datos, si quieres probar en tu propio sistema esta demostración, sería bueno que lo copiaras 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
create database demo_NivelPredeterminado go create database demo_Read_committed_snapshot alter database demo_Read_committed_snapshot set read_committed_snapshot on go create database demo_snapshot_isolation alter database demo_snapshot_isolation set allow_snapshot_isolation on go use demo_NivelPredeterminado go create table t (id int not null primary key, foo varchar(100)) go insert into t values(1,'foo1'),(2,'foo2') go use demo_Read_committed_snapshot go create table t (id int not null primary key, foo varchar(100)) go insert into t values(1,'foo1'),(2,'foo2') go use demo_snapshot_isolation go create table t (id int not null primary key, foo varchar(100)) go insert into t values(1,'foo1'),(2,'foo2') go go use master /* drop database demo_NivelPredeterminado go drop database demo_Read_committed_snapshot go drop database demo_snapshot_isolation */ |
En la demostración, podreis comprobar como se comportan los updates, los bloqueos en función del nivel de aislamiento que estemos usando en nuestra conexión. A pesar de no ser muy larga la demostración es bastante intensa, sobre todo para aquellos que seáis noveles en estos aspectos.
Quedo a la espera de vuestros comentarios! Gracias y hasta el próximo vídeo demostración.