DBCC FREESYSTEMCACHE (Transact-SQL)

キャッシュ全体から未使用のすべてのキャッシュ エントリを解放します。SQL Server データベース エンジンでは、未使用のキャッシュ エントリをバックグラウンドで事前にクリーンアップし、メモリを現在のエントリで使用できるようにします。ただし、このコマンドを使用できるのは、キャッシュ全体または指定したリソース ガバナ プール キャッシュから未使用のキャッシュ エントリを手動で削除する場合です。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

DBCC FREESYSTEMCACHE 
        ( 'ALL' [, pool_name ] ) 
    [WITH 
    { [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ]  }
    ]

引数

  • ( 'ALL' [, pool_name ] )
    ALL はサポートされるすべてのキャッシュを指定します。

    pool_name はリソース ガバナ プール キャッシュを指定します。このプールに関連付けられたエントリだけが解放されます。

  • MARK_IN_USE_FOR_REMOVAL
    現在使用しているエントリが使用されなくなったら、それぞれのキャッシュから非同期に解放します。DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL の実行後にキャッシュ内に作成された新しいエントリには影響ありません。

  • NO_INFOMSGS
    すべての情報メッセージを表示しないようにします。

結果セット

DBCC FREESYSTEMCACHE は次のメッセージを返します。

"DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。"

説明

DBCC FREESYSTEMCACHE を実行すると、SQL Server のインスタンスのプラン キャッシュが消去されます。プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。プラン キャッシュ内のキャッシュストアが消去されるたびに、"SQL Server は、'DBCC FREEPROCCACHE' 操作または 'DBCC FREESYSTEMCACHE' 操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました。" という情報メッセージが SQL Server エラー ログに記録されます。このメッセージは、キャッシュが 5 分以内にフラッシュされる場合に限り、その間隔でログに記録されます。

権限

サーバーに対する ALTER SERVER STATE 権限が必要です。

A. リソース ガバナ プール キャッシュから未使用のキャッシュ エントリを解放する

次の例は、指定したリソース ガバナ リソース プール専用のキャッシュを消去する方法を示しています。

-- Clean all the caches with entries specific to the resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL','default');

B. エントリが使用されなくなったらそれぞれのキャッシュから解放する

次の例では、MARK_IN_USE_FOR_REMOVAL 句を使用して、エントリが使用されなくなったら現在のすべてのキャッシュから解放します。

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;