Когда SQL Server получает блокировки?

10

Список уровней изоляции в SQL Server найден здесь говорится , что блокировки записи , полученные в рамках транзакции, сохраняются до конца транзакции. Однако ничего не говорится о том, когда эти замки были приобретены.

Блокировки по умолчанию приобретаются в начале транзакции или только тогда, когда они необходимы? Если последнее верно, то было бы поэтому выгодно в больших транзакциях выполнять операции записи как можно позже, чтобы минимизировать время, в течение которого удерживаются блокировки X?

Леви Ботельо
источник

Ответы:

5

Блокировки по умолчанию приобретаются в начале транзакции или только тогда, когда они необходимы?

Замки приобретаются непосредственно перед тем, как происходит чтение или запись. В зависимости от степени детализации блокировки, выбранной механизмом хранения, блокировки могут быть получены на уровне строки, страницы, раздела или объекта (таблицы).

Если последнее верно, то было бы поэтому выгодно в больших транзакциях выполнять операции записи как можно позже, чтобы минимизировать время, в течение которого удерживаются блокировки X?

Да, это может быть выгодно для параллелизма, в зависимости от уровня изоляции, используемого параллельными транзакциями.

Связанное чтение:

Пол Уайт 9
источник