Что измеряет продолжительность на сервере sql?

8

Что именно измеряет длительность запроса при проведении трассировки профилировщика?

У меня есть хранимая процедура, которая выполняет доступ к данным (SELECT), и для возврата результатов в приложение требуется в среднем около 30 секунд. Но когда я запускаю трассировку, я получаю среднюю продолжительность около 8 секунд, максимальную продолжительность 12 секунд, средний процессор 5,5 секунд.

Что может заставить так долго возвращать набор результатов? Я не накапливаю большие ожидания NETWORKIO. Результирующий набор составляет всего около 270 строк простых текстовых данных, всего около 50 столбцов.

sqlbattsman
источник
4
Это не включает время, необходимое для доставки и отображения результатов на клиенте.
Аарон Бертран
Это имеет смысл, но если бы была большая задержка (в три раза больше времени выполнения для получения результатов), разве вы не ожидали увидеть большое ожидание NETWORKIO? Мой последний перезапуск был только вчера, с NETWORKIO ждет 230 секунд всего (мне кажется, не так уж много за один день).
sqlbattsman
3
Вы пытались выполнить команду с помощью SET STATISTICS TIME и т. Д.? Также, если вы потратите время на рендеринг, вы не увидите этого в сети. Есть ли какие-либо различия, если вы отображаете все эти данные в результатах в виде текста или сетки?
Аарон Бертран
Результаты к тексту существенно не отличаются. Теперь, когда я запускаю его с SET STATISTICS TIME, общая продолжительность, которую я получаю, гораздо точнее
sqlbattsman

Ответы:

1

Длительность представляет собой общее время от начала до конца запроса SQL Server, которое представляет время для отправки по сети, время процессора, время ожидания и выполнения. Как отметил Аарон, как только клиент получил данные, SQL Server завершил свою синхронизацию, и клиент затем обрабатывает. Это не должно быть частью продолжительности.

SheldonH
источник