Prima di eseguire un test delle prestazioni / baseline per un'app che utilizza SQL Server, voglio essere in grado di impostare l'istanza su uno stato "pulito", senza riavviare l'istanza. Ci sono passaggi che tendo a seguire, ma voglio costruire un elenco definitivo che sia nella sequenza corretta e che non abbia passaggi ridondanti.
Questo elenco di passaggi consente di impostare SQL Server su uno stato "pulito"?
La sequenza è logica / corretta?
Ci sono passaggi ridondanti?
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
è bello per i test ma non sempre accurati. Se fai riferimento a una tabella ad alto volume, è molto probabile che avrai quasi sempre pagine in memoria e il tempo di I / O non sarà un grande fattore in quella query. Potresti dare più peso all'IO di quanto sia realistico in quel caso.