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