Versão do banco de dados: Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 24 de novembro de 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Express Edition com serviços avançados no Windows NT 5.1 (compilação 2600: Service Pack 3)
Eu tenho uma tabela com cerca de 7000 linhas habilitadas para pesquisa de texto completo em alguns campos de texto na tabela. Se eu executar a seguinte consulta:
dbcc freeproccache
dbcc dropcleanbuffers
set statistics time on
select * from Codes
where CONTAINS([level1AltDesc], '"Unspec*"')
set statistics time off
Eu obtenho resultados consistentes corretos todas as vezes. No entanto, os tempos decorridos e tempos de CPU podem variar bastante descontroladamente. Executando várias vezes recebo o seguinte em Mensagens:
DBCC execution completed. If DBCC printed error messages, contact your system administrator. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
(861 row(s) affected)
SQL Server Execution Times: CPU time = 0 ms, elapsed time = 251 ms.
Rodando mais algumas vezes eu recebo:
DBCC execution completed. If DBCC printed error messages, contact your system administrator. DBCC execution completed. If DBCC printed error messages, contact your system administrator.
(861 row(s) affected)
SQL Server Execution Times: CPU time = 15 ms, elapsed time = 869 ms.
Eu tentei rodar com o IO STATISTICS, mas eles nunca mudam. Eu tentei usar o SQL Profiler, mas apenas ver as mesmas diferenças nos tempos decorridos. Eu adicionei apenas os eventos padrão, então eu posso estar perdendo o que explicaria isso.
Eu vi o mesmo comportamento usando um procedimento armazenado em vez de uma consulta independente. Executando isso como um procedimento armazenado e, em seguida, consultando sys.dm_exec_query_stats, posso ver um total_elapsed_time que é significativamente maior que o total_worker_time.
Como isso está em uma máquina de teste dedicada comigo como o único usuário e sem carga de qualquer outra fonte e nenhuma carga visível no computador (média 98-99% cpu ocioso) Estou um pouco preocupado com o que pode acontecer em uma máquina de produção quando o sistema estiver sob carga mais pesada.
Alguma idéia do que pode estar causando essas oscilações em tempos de execução e o que eu posso fazer sobre elas?