LCK_M_XXX
Это механизм ядра SQL Server, позволяющий организовать одновременную работу с данными в одно и то же время. Другими словами этот механизм поддерживает целостность данных, защищая доступ к объекту базы данных.
ИЗ Book On-Line:
LCK_M_BU
Имеет место, когда задача ожидает получения блокировки для массового обновления (BU). Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_IS
Имеет место, когда задача ожидает получения блокировки с намерением коллективного доступа (IS). Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_IU
Имеет место, когда задача ожидает получения блокировки с намерением обновления (IU). Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_IX
Имеет место, когда задача ожидает получения блокировки с намерением монопольного доступа (IX). Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_S
Имеет место, когда задача ожидает получения совмещаемой блокировки. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_SCH_M
Имеет место, когда задача ожидает получения блокировки на изменение схемы. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_SCH_S
Имеет место, когда задача ожидает получения совмещаемой блокировки схемы. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_SIU
Имеет место, когда задача ожидает получения совмещаемой блокировки с намерением обновления. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_SIX
Имеет место, когда задача ожидает получения совмещаемой блокировки с намерением монопольного доступа. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_U
Имеет место, когда задача ожидает получения блокировки на обновление. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_UIX
Имеет место, когда задача ожидает получения блокировки на обновление с намерением монопольного доступа. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
LCK_M_X
Имеет место, когда задача ожидает получения блокировки на монопольный доступ. Матрицу совместимости блокировок см. в представлении sys.dm_tran_locks
Объяснение:
Я считаю, что объяснение этого вида ожиданий очень лёгкое. Когда любое задание ожидает наложения блокировки на любой ресурс, происходит этот вид ожиданий. Основная причина сложности наложения блокировки состоит в том, что на необходимый ресурс уже наложена блокировка и другая операция производится с этими данными. Это вид ожиданий сообщает, что ресурсы не доступны или заняты в данный момент.
Вы можете использовать следующие методы, чтобы обнаружить блокировки
- EXEC sp_who2
- Быстрый способ найти заблокированные запросы
- DMV – sys.dm_tran_locks
- DMV – sys.dm_os_waiting_tasks
Устранение LCK_M_XXX:
- Проверьте долгие транзакции, постарайтесь разбить их на более мелкие
- Уровень изоляции Serialization может создавать этот вид ожиданий. Изначальный уровень изоляции SQL Server — ‘Read Committed’
- Один из моих клиентов решил этот вопрос с помощью уровня изоляции ‘Read Uncommitted’. Я настоятельно не рекомендую такое решение, так как будет очень много грязного чтения в базе данных
- Найдите заблокированные запросы, изучите почему так происходит и исправьте их
- Секционирование может быть источником проблемы
- Проверьте нет ли проблем с памятью и IO операциями
Проверить память можно с помощью следующих счётчиков производительности (Perfomance Monitor):
- SQLServer: Memory Manager\Memory Grants Pending (Постоянное значение более чем 0-2 свидетельствует о проблеме)
- SQLServer: Memory Manager\Memory Grants Outstanding
- SQLServer: Buffer Manager\Buffer Hit Cache Ratio (Чем больше, тем лучше. Обычно значение долго превышать 90%)
- SQLServer: Buffer Manager\Page Life Expectancy (плохо, когда ниже 300)
- Memory: Available Mbytes
- Memory: Page Faults/sec
- Memory: Pages/sec
Проверить диск можно с помощью:
- Average Disk sec/Read (Постоянное значение более чем 4-8 мс свидетельствует о проблеме)
- Average Disk sec/Write (Постоянное значение более чем 4-8 мс свидетельствует о проблеме)
- Average Disk Read/Write Queue Length
Заметка: Представленная тут информация является только моим опытом. Я настраиваю, чтобы вы читали Books On-Line. Все мои обсуждения ожиданий здесь носят общий характер и изменяются от системы к системе. Я рекомендую сначала тестировать всё на сервере разработки, прежде чем применять это на рабочем сервере.
Автор: Pinal Dave
*** *** *** *** *** *** *** *** *** *** *** ***
Полезные Скрипты
Рубрика Проверь себя
Ссылка на наш канал YouTube