Antes de executar um teste de desempenho / linha de base para um aplicativo que usa o SQL Server, desejo poder definir a instância para um estado "limpo", sem reiniciar a instância. Existem etapas que eu tendem a seguir, mas quero criar uma lista definitiva que esteja na sequência correta e que não tenha etapas redundantes.
Esta lista de etapas realiza a configuração do SQL Server para um estado "limpo"?
A sequência é lógica / correta?
Existem etapas redundantes?
CHECKPOINT -- Write all dirty pages
DBCC DROPCLEANBUFFERS -- All should be clean after checkpoint?
DBCC FREEPROCCACHE -- Clear the plan cache
DBCC FREESYSTEMCACHE -- Is this necessary after FREEPROCCACHE?
DBCC FREESESSIONCACHE -- May not be necessary if distributed queries aren't used, but want to catch all scenarios
EXEC SP_UPDATESTATS -- Refresh stats
'BEGIN TESTING!'
DROPCLEANBUFFERS
teste é bom para testar, mas nem sempre é preciso. Se você estiver referenciando uma tabela de alto volume, é muito provável que você quase sempre tenha páginas na memória, e o tempo de IO não será um grande fator nessa consulta. Você pode colocar mais peso no IO do que é realista nesse caso.