Прежде чем запускать тест производительности / базовый уровень для приложения, использующего SQL Server, я хочу иметь возможность установить экземпляр в «чистое» состояние без перезапуска экземпляра. Есть шаги, которым я склонен следовать, но я хочу создать окончательный список, который находится в правильной последовательности и не содержит лишних шагов.
Достиг ли этот список шагов установки SQL Server в «чистое» состояние?
Является ли последовательность логичной / правильной?
Есть ли лишние шаги?
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
это хорошо для тестирования, но не всегда точно. Если вы ссылаетесь на таблицу большого объема, очень вероятно, что у вас почти всегда будут страницы в памяти, и время ввода-вывода не будет иметь большого значения в этом запросе. Вы можете придавать IO больший вес, чем это реально в этом случае.