Bevor Sie einen Leistungstest / eine Baseline für eine App ausführen, die SQL Server verwendet, möchte ich die Instanz in einen "sauberen" Zustand versetzen können, ohne die Instanz neu zu starten. Es gibt Schritte, denen ich tendenziell folge, aber ich möchte eine endgültige Liste erstellen, die in der richtigen Reihenfolge vorliegt und keine redundanten Schritte enthält.
Schafft diese Liste von Schritten das Setzen von SQL Server in einen "sauberen" Zustand?
Ist die Reihenfolge logisch / korrekt?
Gibt es redundante Schritte?
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
ist schön zum Testen, aber nicht immer genau. Wenn Sie auf eine Tabelle mit hohem Volumen verweisen, haben Sie höchstwahrscheinlich fast immer Seiten im Speicher, und die E / A-Zeit spielt bei dieser Abfrage keine große Rolle. Möglicherweise legen Sie mehr Gewicht auf E / A, als in diesem Fall realistisch ist.