когда/какие блокировки удерживаются/освобождаются на уровне изоляции READ COMMITTED

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

17
задан Bogdan Sahlean 4 July 2012 в 12:08
поделиться