Статистика и виды ожиданий. День № 15 (LCK_M_XXX)

Статистика и виды ожиданий. День № 15 (LCK_M_XXX)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

Объяснение:

Я считаю, что объяснение этого вида ожиданий очень лёгкое. Когда любое задание ожидает наложения блокировки на любой ресурс, происходит этот вид ожиданий. Основная причина сложности наложения блокировки состоит в том, что на необходимый ресурс уже наложена блокировка и другая операция производится с этими данными. Это вид ожиданий сообщает, что ресурсы не доступны или заняты в данный момент.

Вы можете использовать следующие методы, чтобы обнаружить блокировки

Устранение 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

Запись опубликована в рубрике Cтатистика и виды ожиданий (Wait Stats and Wait Types) с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: