小物SEのメモ帳

IT関係の試したことや調べたことの備忘録

【SQL server2012】特定の実行プランのみキャッシュクリアする方法

SQL server では、キャッシュクリアしたい実行プランのプランハンドルがわかれば、特定の実行プランのみをクリアすることができます。

 

何らかの原因で実行プランが変わり、急激なパフォーマンス低下が発生してしまった際等に、他の処理への影響を減らしつつ実行プランを変更する手法として利用できるかと思います。

 

削除テスト用のSQLを実行して、削除するための実行プランを作成します。

f:id:utiowa:20160709194945p:plain

 

次に削除する実行プランのPlan_handleを取得します。

f:id:utiowa:20160709195008p:plain

 

DBCCコマンドの引数として先ほどの削除する実行プランのPan_handleを渡して実行します。
【コマンド】DBCC FREEPROCCACHE(<plan_handle>)
*尚、ここでは試しておりませんが、MSDNライブラリを見る限り、Plan_handleだけでなく、sql_handleも指定できるため、sql_handleに紐づく実行プランも削除出来るようです。

 

f:id:utiowa:20160709195036p:plain

 

プランキャッシュから先ほどの実行プランが削除されていることが確認できます。

f:id:utiowa:20160709195053p:plain

 

プランキャッシュ上にはそのほかの実行プランがキャッシュクリアされずに、残っていることが確認できます。

f:id:utiowa:20160709195105p:plain