SQL Serverは、割り当てられたサーバーメモリをさまざまな目的で使用します。それらの2つは、実行計画と実際のデータを対応して格納するために使用される計画キャッシュとデータキャッシュです。
私の質問:これらの2つのキャッシュには、バッファープール内の異なる割り当てられたスペースセクションがありますか、それとも、バッファープール内にセクションを1つだけ持っていますか?
つまり、プランキャッシュがいっぱいになると、データキャッシュのスペースも減少しますか?
はい。プランキャッシュとページキャッシュは、利用可能なサーバーメモリを共有します。大規模なプランキャッシュを拡張しても、ほとんどメリットがほとんどないため、プランキャッシュには上限があります。
私の知る限り、この古いドキュメントページはまだ正確です:
キャッシュを計画するために割り当てられるメモリ
SQL Serverによって使用されるほとんどのメモリは、データページを格納するために使用されるバッファプールに割り当てられます。 SQL Serverは、クエリプランのキャッシュで使用するために、このメモリの一部を盗みます。
キャッシュプレッシャー制限SQL Server 2008およびSQL Server 2005 SP2 [以降]
0〜4GBの可視ターゲットメモリの75%+ 4Gb-64GBの可視ターゲットメモリの10%+可視ターゲットメモリの5%> 64GB
つまり、プランキャッシュがターゲットを超えると、プランキャッシュがトリミングされ、プランキャッシュに使用されるメモリの量が効果的に制限されます。