測定プランの削除


9

最大メモリが24GBに設定されたSQL Server 2016 SP1があります。
このサーバーには多数のコンパイルがあり、これらのコンパイルの10%のみがアドホッククエリからのものです。したがって、新しくコンパイルされたプランはプランキャッシュに保存されますが、プランキャッシュのサイズは増加していません(約3.72GB)。

キャッシュからのプランの削除につながるローカルメモリのプレッシャーがあると思います。プランのキャッシュ圧力制限は5GBです。(0-4GBの可視ターゲットメモリの75%+ 4GB-64GBの可視ターゲットメモリの10%+可視ターゲットメモリの5%> 64GB)。キャッシュストアが圧力制限の75%に達したら、プランをキャッシュから削除する必要があります。私の場合、5 GBの75%は3.75GBです。したがって、これが高コンパイルの原因であると考えられます。

キャッシュからの計画からの削除を測定する方法(perfmon、拡張イベントなど)はありますか?だから私は確かにローカルメモリのプレッシャーが高コンパイルの原因であることを確信できますか?

回答:


9

そのためのXEventがあります。

query_cache_removal_statistics

クエリプランがプランキャッシュから削除され、オブジェクトの履歴統計が破棄されようとしているときに発生します

だから次のようなもの:

CREATE EVENT SESSION [PlanCacheEvictions] ON SERVER 
ADD EVENT sqlserver.query_cache_removal_statistics(
    ACTION(sqlserver.sql_text))

また、プランキャッシュに多数の使い捨てプランがある場合は、アドホックワークロードの最適化の設定を検討してください。

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