Estoy tratando de comprender el aislamiento/bloqueos en SQL Server.cuando/qué bloqueos se mantienen/liberan en el nivel de aislamiento READ COMMITTED
he siguiente escenario en lectura confirmada nivel de aislamiento (por defecto)
Tenemos una mesa.
create table Transactions(Tid int,amt int)
with some records
insert into Transactions values(1, 100)
insert into Transactions values(2, -50)
insert into Transactions values(3, 100)
insert into Transactions values(4, -100)
insert into Transactions values(5, 200)
Ahora desde MSDN entendí
Cuando un selecto se dispara compartían bloqueo se toma de manera ninguna otra transacción puede modificar los datos (evitando lectura sucia) .. Documentación también habla de nivel de fila, a nivel de página , bloqueo de nivel de tabla. Pensé siguiente scenarion
Begin Transaction
select * from Transactions
/*
some buisness logic which takes 5 minutes
*/
Commit
Lo que quiero entender es por lo que la duración del tiempo de bloqueo compartido sería adquirido, y que (fila, página, la tabla).
Will lock se adquirirá solo cuando se ejecute la instrucción select * from Transactions
o se adquirirá durante más de 5 minutos hasta que lleguemos a COMMIT. cerradura
detalles de implementación son importantes cuando obtiene bloqueos de tabla en lugar de bloqueos de fila. – matao
El pequeño enlace de Kendra está roto – TinyTheBrontosaurus