最大メモリが24GBに設定されたSQL Server 2016 SP1があります。
このサーバーには多数のコンパイルがあり、これらのコンパイルの10%のみがアドホッククエリからのものです。したがって、新しくコンパイルされたプランはプランキャッシュに保存されますが、プランキャッシュのサイズは増加していません(約3.72GB)。
キャッシュからのプランの削除につながるローカルメモリのプレッシャーがあると思います。プランのキャッシュ圧力制限は5GBです。(0-4GBの可視ターゲットメモリの75%+ 4GB-64GBの可視ターゲットメモリの10%+可視ターゲットメモリの5%> 64GB)。キャッシュストアが圧力制限の75%に達したら、プランをキャッシュから削除する必要があります。私の場合、5 GBの75%は3.75GBです。したがって、これが高コンパイルの原因であると考えられます。
キャッシュからの計画からの削除を測定する方法(perfmon、拡張イベントなど)はありますか?だから私は確かにローカルメモリのプレッシャーが高コンパイルの原因であることを確信できますか?