Как работают Intent-блокировки SQL Server?

Я читал некоторые статьи о блокировке намерений, в которых говорится, что существует множество блокировок намерений, таких как совместное использование намерения (IS), эксклюзивное намерение (IX), совместное использование с эксклюзивным намерением (SIX), обновление намерения (IU), обновление общего намерения (SIU), Эксклюзивное намерение обновления (UIX). Иногда я находил эти блокировки в статистике блокировок, и мне было трудно идентифицировать каждую из этих блокировок, потому что иногда возникали проблемы с производительностью.

Для чего на самом деле используется блокировка намерений? как каждая из этих блокировок намерений работает против блокировок друг друга в параллелизме базы данных?

Спасибо


person Alfin E. R.    schedule 02.05.2018    source источник


Ответы (2)


Намеренные блокировки — это повышение производительности, которое позволяет SQL Server быстро проверять наличие блокировок на более детальном уровне.

https://www.sqlpassion.at/archive/2016/05/16/why-do-we-need-intent-locks-in-sql-server/

person MJH    schedule 02.05.2018

У меня также есть дополнительная информация по этому вопросу.

Общие намерения (IS) В этом режиме блокировки SQL Server защищает запрошенные или полученные общие (S) блокировки для некоторых ресурсов ниже в иерархии блокировок.

Исключительное намерение (IX) Этот режим блокировки представляет собой надмножество общих блокировок намерения (IS), которые не только защищают блокировки на ресурсах ниже в иерархии, но также защищают запрошенные или полученные эксклюзивные (X) блокировки на некоторых ресурсы ниже по иерархии.

Совместное использование с эксклюзивным намерением (SIX) Этот режим блокировки защищает запрошенные или полученные общие (S) блокировки для всех ресурсов ниже в иерархии и блокировки с эксклюзивным намерением (IX) для некоторых ресурсов ниже в иерархии. Одновременно для ресурса может существовать только одна общая блокировка с эксклюзивным намерением (SIX), чтобы предотвратить его изменение другими транзакциями. Однако ресурсы более низкого уровня могут иметь общие блокировки намерения (IS) и могут быть прочитаны другими транзакциями.

Обновление с намерением (IU) SQL Server использует этот режим блокировки на ресурсах страницы только для защиты запрошенных или полученных блокировок обновления (U) на всех ресурсах более низкого уровня и преобразует его в блокировку с исключением намерения (IX), если транзакция выполняет операцию обновления.

Shared Intent Update (SIU) Этот режим блокировки представляет собой комбинацию общих (S) и Intent Update (IU) блокировок и возникает, когда транзакция получает каждую блокировку отдельно, но удерживает их одновременно.

Монопольное обновление с намерением (UIX) Этот режим блокировки является результатом комбинации блокировок обновления (U) и монопольного намерения (IX), которые транзакция получает отдельно, но удерживает одновременно.

person Alfin E. R.    schedule 02.05.2018