Блокировки, ожидания и head blocker в SQL Server
Длинный список заблокированных сеансов делает каждый запрос подозрительным. Обычно одна транзакция в начале цепочки определяет длительность и масштаб инцидента.
Блокировки, ожидания и head blocker в SQL Server
Длинный список заблокированных сеансов делает каждый запрос подозрительным. Обычно одна транзакция в начале цепочки определяет длительность и масштаб инцидента.
Что измерять
Соберите цепочку, тип и ресурс ожидания, начало транзакции, открытый оператор, isolation level, приложение и недавний план. Отделите блокировки от CPU, I/O, памяти и параллелизма.
Практический подход
Найдите head blocker до завершения нижестоящих сеансов, выясните причину открытой транзакции, сократите ее, улучшите обоснованные пути доступа и выявляйте забытые транзакции.
Чего следует избегать
Не завершайте все заблокированные сеансы, не анализируйте накопленные ожидания без интервала и не применяйте NOLOCK без согласия на неверные результаты.
Эксплуатационный результат
Правильная реакция восстанавливает сервис и сохраняет доказательства для предотвращения повторения.
Проверка перед production
Зафиксируйте исходные показатели и определите ожидаемое улучшение. Проверьте решение на репрезентативных данных и при реальной параллельной нагрузке. Сохраните исходную настройку или план, подготовьте откат и наблюдайте следующий обычный пик нагрузки.
Чтобы применить этот подход к конкретной среде SQL Server, используйте форму ниже и укажите версию SQL Server, размер базы, профиль нагрузки и уже собранные данные.