11

あなたが実行しなければならない「ベストプラクティス」があります

DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

SQL クエリでパフォーマンス分析を行う前。

ただし、たとえば、後者の DROPCLEANBUFFERS:

サーバーをシャットダウンして再起動せずに、DBCC DROPCLEANBUFFERS を使用して、コールド バッファー キャッシュでクエリをテストします。

バッファー プールからクリーン バッファーを削除するには、まず CHECKPOINT を使用してコールド バッファー キャッシュを作成します。これにより、現在のデータベースのすべてのダーティ ページが強制的にディスクに書き込まれ、バッファが消去されます。これを行った後、DBCC DROPCLEANBUFFERS コマンドを発行して、バッファー プールからすべてのバッファーを削除できます。

これは、サーバーで実行された最初のクエリであるかのようにクエリをテストすることを意味すると思います。したがって、クエリの実際の「実際の」影響は低くなります。

クエリのコストを知るために 3 つのコマンドを実行することは本当にお勧めですか、それとも実際の環境での実際のクエリ時間とは密接な関係のないかなり経験的な結果が得られるのでしょうか?

4

3 に答える 3

8

私はそれがベストプラクティスであることに同意せず、めったに使用しません。

私が調整するクエリは、人気があり、頻繁に実行されるクエリである必要があります。これは、私の支出に見合うだけの価値があります。プランまたはデータのいずれかに対して「コールド」で実行することはめったにありません。

クエリの実行をテストしています。ディスク読み取りシステムやクエリ オプティマイザーのコンパイルではありません。

これは少し前に DBA.SE で尋ねられました。これらを見てください

于 2013-06-11T11:20:07.117 に答える