Я пытаюсь понять изоляцию/блокировки в 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.