web-dev-qa-db-ja.com

SQL Serverのキャッシュからテーブルをクリアするにはどうすればよいですか?

データベースに、キャッシュしてはならないテーブルがいくつかあります。

SQL Serverにテーブルのページをキャッシュしないように指示する方法、またはキャッシュから単一のテーブルをフラッシュする方法を教えてください。

すべてのキャッシュをフラッシュすることはオプションではありません。

SQL Server 2008とSQL Server 2008 R2を使用しています。

10
Catalin Adler

これを行う方法はありません。

DBCC DROPCLEANBUFFERSは、特定のデータベースまたはオブジェクトのパラメーターを受け入れません。内部的にSQL Serverはデータベースレベルでこれを実行できますが、データベースがAUTO_CLOSEdの場合、対応するすべてのページがバッファキャッシュから削除されます。

また、SQL Serverは内部的に、特定のページにマークを付けることができます。これはsys.dm_db_index_physical_statsなどのDMVで使用されており、バッファプールのフラッシュを回避します この記事 で言及されていますが、この機能は公開されていません(たとえば、大きなテーブルの1回限りのスキャンを実行する場合も同じように指定できます)。

12
Martin Smith

特定のテーブルをキャッシュしないように指定することはできません。テーブルをキャッシュに入れたくないと思うのはなぜですか?

SQL Serverは通常の操作をすべてバッファープールで実行するため、SQL Serverにテーブルをキャッシュに読み込まないように指示できた場合、そのテーブルは通常のDML操作ではアクセスできません。

7
mrdenny