Эксплуатация SQL Server

Взаимоблокировки SQL Server: от графа к первопричине

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

Взаимоблокировки SQL Server: от графа к первопричине

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

Что измерять

Сохраняйте XML через Extended Events. Изучите процессы, ресурсы, режимы блокировок, операторы, транзакции и жертву, затем сопоставьте каждый оператор с действием приложения.

Практический подход

Обращайтесь к объектам в одинаковом порядке, сокращайте транзакции, обоснованно улучшайте доступ и реализуйте ограниченные повторы для ошибки 1205.

Чего следует избегать

Не используйте NOLOCK как универсальное средство, не обвиняйте только жертву и не сохраняйте лишь снимок вместо полного XML.

Эксплуатационный результат

Надежное исправление устраняет или сокращает цикл. Повторы защищают пользователя, но не заменяют устранение причины.

Проверка перед production

Зафиксируйте исходные показатели и определите ожидаемое улучшение. Проверьте решение на репрезентативных данных и при реальной параллельной нагрузке. Сохраните исходную настройку или план, подготовьте откат и наблюдайте следующий обычный пик нагрузки.

Чтобы применить этот подход к конкретной среде SQL Server, используйте форму ниже и укажите версию SQL Server, размер базы, профиль нагрузки и уже собранные данные.

Вопрос по статье

Есть вопрос по этой теме?

Расскажите, что вы оцениваете или с какой проблемой столкнулись. Мы ответим с практической рекомендацией.

Inquiries are not enabled in this preview.

Задать вопрос по этой статье