データベースに、キャッシュしてはならないテーブルがいくつかあります。
SQL Serverにテーブルのページをキャッシュしないように指示する方法、またはキャッシュから単一のテーブルをフラッシュする方法を教えてください。
すべてのキャッシュをフラッシュすることはオプションではありません。
SQL Server 2008とSQL Server 2008 R2を使用しています。
これを行う方法はありません。
DBCC DROPCLEANBUFFERS
は、特定のデータベースまたはオブジェクトのパラメーターを受け入れません。内部的にSQL Serverはデータベースレベルでこれを実行できますが、データベースがAUTO_CLOSE
dの場合、対応するすべてのページがバッファキャッシュから削除されます。
また、SQL Serverは内部的に、特定のページにマークを付けることができます。これはsys.dm_db_index_physical_stats
などのDMVで使用されており、バッファプールのフラッシュを回避します この記事 で言及されていますが、この機能は公開されていません(たとえば、大きなテーブルの1回限りのスキャンを実行する場合も同じように指定できます)。
特定のテーブルをキャッシュしないように指定することはできません。テーブルをキャッシュに入れたくないと思うのはなぜですか?
SQL Serverは通常の操作をすべてバッファープールで実行するため、SQL Serverにテーブルをキャッシュに読み込まないように指示できた場合、そのテーブルは通常のDML操作ではアクセスできません。