Как это возможно, что этот запрос занимает так много времени, не используя много ресурсов? - PullRequest
0 голосов
/ 22 ноября 2011

Я запустил трассировку SQL Server Profiler (длительность при завершении пакета) и нашел один действительно долго выполняющийся запрос. Вот статистика использования для пяти самых продолжительных запросов:

Count   Duration    CPU     Reads   Writes
1       1237757030  608     47979   10
14695   358668961   355928  4818709 315
3501    48323496    43705   625474  17 
75883   46373094    45250   8526977 127
34      35394031    10200   2461621 0

Первый работает почти в 3 раза дольше, чем второй, хотя у второго гораздо больше совокупного времени ЦП и числа операций чтения, чем у первого. Как это могло быть, или как я могу узнать больше о том, что здесь происходит?

1 Ответ

4 голосов
/ 22 ноября 2011

Обычно это вызвано неким конфликтом ресурсов. Другими словами, ваш запрос бездействует, ожидая снятия блокировок (блокирования), чтения данных с диска, ожидания завершения работы потоков и т. Д.

Это глубокая тема, но я бы порекомендовал начать с просмотра статистики ожидания.

Чтобы получить представление о совокупной статистике ожидания, посмотрите sys.dm_os_wait_stats. От BOL:

«Определенные типы времени ожидания во время выполнения запроса могут указывать узкие места или точки задержки в запросе. Точно, высокое ожидание время ожидания или подсчет сервера в целом может указывать на узкие места или горячие пятна во взаимодействиях запросов взаимодействия внутри экземпляра сервера. ”

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

http://www.simple -talk.com / SQL / SQL-инструменты / как к идентификации блокирующий-проблемы-с-SQL-профайлер /

Это несколько областей, на которые стоит обратить внимание, но, честно говоря, существует так много переменных, что, если у вас нет доступа к вашему серверу, невероятно сложно что-либо, кроме предположений и предложений о том, где вы могли бы искать.

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