Antes de ejecutar una prueba de rendimiento / línea de base para una aplicación que utiliza SQL Server, quiero poder establecer la instancia en un estado "limpio", sin reiniciar la instancia. Hay pasos que suelo seguir, pero quiero construir una lista definitiva que esté en la secuencia correcta y que no tenga pasos redundantes.
¿Esta lista de pasos logra configurar SQL Server en un estado "limpio"?
¿Es la secuencia lógica / correcta?
¿Hay pasos 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
es bueno para las pruebas, pero no siempre es preciso. Si hace referencia a una tabla de alto volumen, es muy probable que casi siempre tenga páginas en la memoria, y el tiempo de E / S no será un factor importante en esa consulta. Puede estar poniendo más peso en IO de lo que es realista en ese caso.