T-SQLコマンドを使用してSQL Serverクエリキャッシュをクリアする
SQL Server クエリキャッシュをクリアする方法
SQL Serverは、パフォーマンスを向上させるために、過去に実行されたクエリのプランをキャッシュします。しかし、キャッシュが蓄積されると、パフォーマンスの問題が発生することがあります。そのような場合、キャッシュをクリアすることで問題を解決できる可能性があります。
キャッシュをクリアするには、以下の方法があります。
T-SQLコマンドを使用する
以下のT-SQLコマンドを実行することで、すべてのクエリのプランをキャッシュから削除できます。
DBCC FREEPROCCACHE
特定のデータベースのキャッシュのみをクリアしたい場合は、以下のコマンドを使用できます。
DBCC FREEPROCCACHE (dbname)
SSMSを使用する
SSMS (SQL Server Management Studio) を使用して、キャッシュをクリアすることもできます。
- SSMSで、クエリエディタに接続します。
- 以下のコマンドを実行します。
EXEC sp_refreshplan @plan_handle = 0
サービスを再起動する
SQL Serverサービスを再起動すると、キャッシュもクリアされます。
注意事項
キャッシュをクリアすると、パフォーマンスが一時的に低下する可能性があります。また、キャッシュに保存されていたクエリのプランがすべて失われるため、再実行時に時間がかかる場合があります。
キャッシュをクリアするタイミング
以下の場合に、キャッシュをクリアすることを検討してください。
- パフォーマンスの問題が発生している
- クエリプランを変更した
- データベースのスキーマを変更した
上記以外にも、サードパーティ製のツールを使用してキャッシュをクリアすることもできます。
DBCC FREEPROCCACHE
特定のデータベースのキャッシュのみをクリアする
DBCC FREEPROCCACHE (dbname)
SSMSを使用してキャッシュをクリアする
EXEC sp_refreshplan @plan_handle = 0
SQL Serverサービスを再起動します。
SQL Server クエリキャッシュをクリアする他の方法
CHECKPOINT ステートメントを実行すると、トランザクションログがフラッシュされ、キャッシュもクリアされます。
CHECKPOINT
RECONFIGURE ステートメントを使用して、max server memory
オプションの値を変更すると、キャッシュもクリアされます。
RECONFIGURE WITH OVERRIDE (max server memory = 8192)
データベースをデタッチして再アタッチすると、キャッシュもクリアされます。
これらの方法は、上記で紹介した方法よりも強力な方法です。キャッシュをクリアする前に、必ず影響を考慮してください。
上記の情報は参考用であり、最新の情報ではない可能性があります。ご使用前に必ず公式ドキュメントを確認してください。
sql-server caching