1

私は非常に単純なクエリを持っています

SELECT count(*) FROM MyTable

508,000 行あります。上記のクエリを初めて実行すると、結果が返されるまでに約 53 秒かかります。クエリを再度実行すると、結果が返されるまで数ミリ秒かかります。

SQL Server がクエリ/結果をキャッシュしていると思いますか? クエリ/結果をキャッシュしないように SQL Server に指示したり、何らかの方法でキャッシュ/結果をクリアしたりすることは可能ですか?

私のアプリケーションでは、いくつかのパフォーマンス チューニングを行おうとしていますが、上記のような問題は役に立ちません。

4

1 に答える 1

2

はい、次のようにデータ バッファーをフラッシュできます (しかし、真剣に、そうしないでください!):

DBCC DROPCLEANBUFFERS

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

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

参照

データベースがボトルネックである可能性は既に除外されているため (これはよくあることです)、データ バッファー キャッシュを解放するのではなく、コードをプロファイリングすることをお勧めします。

于 2013-12-26T23:38:10.023 に答える