Чтение графа тупиков SQL - PullRequest
       1

Чтение графа тупиков SQL

6 голосов
/ 01 сентября 2011

Может кто-нибудь помочь мне прочитать / понять этот график взаимоблокировок?

Я не понимаю, почему процесс 75 запрашивает блокировку для объекта, на котором он уже заблокирован?

Deadlock graph

1 Ответ

8 голосов
/ 01 сентября 2011

Согласно статье в блоге, в которой я обнаружил наличие «события Exchange», указывается, что источником вашей проблемы может быть параллелизм в вашем запросе.

Сегодняшний досадный и громоздкий термин: «взаимные блокировки параллельных потоков внутри запроса»

В вышеприведенной статье мы рассмотрим гораздо более подробно, однако изюминка:

Обходной путь# 1: Добавьте индекс или улучшите запрос, чтобы устранить необходимость параллелизма.В большинстве случаев использование параллелизма в запросе указывает на то, что у вас очень большое сканирование, сортировка или объединение, которое не поддерживается соответствующими индексами.Если вы настроите запрос, вы часто обнаружите, что в итоге вы получите гораздо более быстрый и эффективный план, который не использует параллелизм и, следовательно, не подвержен данному типу проблем.Конечно, в некоторых запросах (в частности, в запросах типа DSS / OLAP) может быть сложно исключить все большие просмотры.

Обходной путь # 2: Принудительное однопоточное выполнение с помощьюПодсказка запроса «OPTION (MAXDOP 1)» в конце запроса.Если вы не можете изменить запрос, вы можете применить подсказку к любому запросу с помощью плана плана.

Возможно, вы захотите попробовать это, чтобы увидеть, есть ли улучшения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...