フルプランキャッシュの動作


8

SQL Server 2005では、プランキャッシュがいっぱいになるとどうなりますか?私はいくつかの調査を行いましたが、収集された小片から、キャッシュされたプランには、その重み、つまりコンパイルのコストに、キャッシュされてから実行された回数を掛けた「年齢」が与えられているようです。時間が経過すると、この経過時間は減少して0になり、「経過時間」と見なされ、必要に応じてフラッシュの候補になります。プランのキャッシュがいっぱいになると、期限切れのプランがキャッシュからフラッシュされます。

このシナリオを複雑にするために舞台裏で起こっていることは他にありますか?

おかげで、

マット

回答:


9

MSDNで見つかったテーマに関する最良の情報は、実行プランのキャッシュと再利用 です。MSDN記事からの引用:

「プロシージャキャッシュからの実行プランの削除

実行プランは、それらを格納するのに十分なメモリがある限り、プロシージャキャッシュに残ります。メモリの負荷が存在する場合、データベースエンジンはコストベースのアプローチを使用して、プロシージャキャッシュから削除する実行プランを決定します。コストベースの決定を行うために、データベースエンジンは、次の要因に従って各実行プランの現在のコスト変数を増減します。

メモリ負荷が存在する場合、データベースエンジンは、プロシージャキャッシュから実行プランを削除することによって応答します。削除するプランを決定するために、データベースエンジンは各実行プランの状態を繰り返し調べ、現在のコストがゼロになったときにプランを削除します。現在のコストがゼロの実行プランは、メモリ不足が発生しても自動的には削除されません。データベースエンジンが計画を調べ、現在のコストがゼロの場合にのみ削除されます。実行プランを調べる際、クエリが現在プランを使用していない場合、データベースエンジンは現在のコストを減らして現在のコストをゼロに近づけます。」

完全な記事を読むことをお勧めします。非常によく文書化されています。リンクもいくつかあることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.