Я пытаюсь понять изоляцию / блокировки в SQL Server.
У меня есть следующий сценарий на уровне изоляции READ COMMITTED (по умолчанию)
У нас есть стол.
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)
Теперь из msdn я понял
При срабатывании select выполняется общая блокировка, поэтому никакая другая транзакция не может изменять данные (избегая грязного чтения). В документации также говорится об уровне строки, уровне страницы, блокировке на уровне таблицы. Я думал о следующем сценарии
Begin Transaction
select * from Transactions
/*
some buisness logic which takes 5 minutes
*/
Commit
Я хочу понять, на какой период времени будет получена общая блокировка и на какой (строка, страница, таблица).
Будет ли блокировка сработана только тогда, когда будет запущен оператор select * from Transactions
, или она будет срабатывать в течение целых 5+ минут, пока мы не дойдем до COMMIT.