dm_exec_query_stats возвращает устаревшие данные? - PullRequest
1 голос
/ 18 июня 2009

Я тестировал свое приложение в базе данных SQL Server 2005 и пытаюсь определить предварительную картину производительности запроса с помощью sys.dm_exec_query_stats.

Проблема: есть определенный запрос, который меня интересует, потому что total_elapsed_time и last_elapsed_time оба являются большими числами. Когда я щекочу свое приложение, чтобы вызвать этот запрос (он успешно выполняется), а затем обновить свой взгляд на статистику, я обнаружил, что

1) число выполнения увеличилось (ожидается) 2) last_execution_time обновлен до настоящего времени (ожидается) 3) last_elapsed_time по-прежнему большое значение (не ожидалось - я ожидал новое значение) 4) total_elapsed_time не изменяется (противоречие?)

Если last_elapsed_time относится к выполнению, которое произошло @ last_execution_time, тогда total_elapsed_time должно было увеличиться?

Эта документация: http://msdn.microsoft.com/en-us/library/ms189741(SQL.90).aspx говорит мне, что last_execution_time - это последний раз, когда план выполнялся, а last_elapsed_time - из "последнего выполненного плана", но не говорит, почему они могут отличаться.

Сам запрос несложен (SELECT / WHERE / ORDER BY - параметры, появляющиеся в предложении where, но без хитрых операций), в таблице сейчас может быть 25 строк.

Вопросы: 1) Каковы реальные отношения между execute_count, last_execution_time и last_elapsed_time? 2) Где находится документация об этих отношениях (руководство, сторонняя книга, блог, жучок, каменные таблички ...)?

1 Ответ

0 голосов
/ 22 октября 2009

Я не знаю, отвечает ли это на самом деле ваш вопрос, но статистика обновляется только после того, как примерно 20% содержимого таблицы изменилось. Если вы запустите UPDATE STATISTICS, а затем ваш запрос с RECOMPILE, будет ли это иметь значение?

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