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時間はそのクエリの大きな要因にはなりません。その場合、現実よりもIOに重点を置く可能性があります。