Версия базы данных: Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 24 ноября 2008 г. 13:01:59 Авторские права (c) 1988-2005 Microsoft Corporation Express Edition с расширенными службами в Windows NT 5.1 (сборка 2600: пакет обновления 3)
У меня есть таблица с примерно 7000 строками, включенными для полнотекстового поиска в нескольких текстовых полях в таблице. Если я запустил следующий запрос:
dbcc freeproccache
dbcc dropcleanbuffers
set statistics time on
select * from Codes
where CONTAINS([level1AltDesc], '"Unspec*"')
set statistics time off
Я каждый раз получаю правильные стабильные результаты. Однако прошедшее время и время ЦП могут сильно различаться. Выполняя несколько раз, я получаю в сообщениях следующее:
Выполнение DBCC завершено. Если DBCC распечатала сообщения об ошибках, обратитесь к системному администратору. Выполнение DBCC завершено. Если DBCC распечатала сообщения об ошибках, обратитесь к системному администратору.
(Затронуто 861 строка (и))
Время выполнения SQL Server: время ЦП = 0 мс, затраченное время = 251 мс.
Запустив его еще несколько раз, я получаю:
Выполнение DBCC завершено. Если DBCC распечатал сообщения об ошибках, обратитесь к системному администратору. Выполнение DBCC завершено. Если DBCC распечатал сообщения об ошибках, обратитесь к системному администратору.
(Затронута 861 строка (-а))
Время выполнения SQL Server: время ЦП = 15 мс, затраченное время = 869 мс.
Я пробовал работать с IO STATISTICS, но они никогда не меняются. Я пробовал использовать SQL Profiler, но вижу те же различия в затраченном времени. Я добавил только довольно стандартные события, так что, возможно, мне не хватает того, которое объясняет это.
Я видел такое же поведение, используя хранимую процедуру вместо отдельного запроса. Запустив это как хранимую процедуру, а затем запросив sys.dm_exec_query_stats, я могу увидеть total_elapsed_time, который значительно превышает total_worker_time.
Поскольку это находится на выделенной тестовой машине со мной как единственным пользователем и без нагрузки из любого другого источника и без заметной нагрузки на компьютер (в среднем 98-99% простоя процессора), я немного беспокоюсь о том, что может произойти на производстве машина, когда система работает под более высокой нагрузкой.
Есть идеи о том, что может вызывать эти резкие колебания времени выполнения и что я могу с ними поделать?