Bei einer unserer SQL Server 2014-Instanzen besteht eine merkwürdige Diskrepanz zwischen der Speichermenge, die für zwischengespeicherte Pläne gemäß sys.dm_exec_cached_plans verwendet wird, und der Speichermenge, die gemäß sys.dm_os_memory_clerks für den Typ CACHESTORE_SQLCP verwendet wird (was ich verstehe) ist für zwischengespeicherte Ad-hoc-Abfragepläne).
Wenn wir die zwischengespeicherten Pläne wie folgt abfragen:
select cp.cacheobjtype, cp.objtype,
sum(cast(cp.size_in_bytes as money))/1024/1024 as sizeMB
from sys.dm_exec_cached_plans as cp
group by cp.cacheobjtype, cp.objtype;
Dann scheinen insgesamt etwa 90 MB für zwischengespeicherte Pläne verwendet zu werden, wobei nur 2 MB für Ad-hoc-Pläne verwendet werden. Es gibt auch nur 300 Pläne im Cache.
Wenn wir uns jedoch die Ansicht dm_os_memory_clerks wie folgt ansehen:
select mc.type, mc.pages_kb/1024 as pagesMB
from sys.dm_os_memory_clerks as mc
where mc.type = 'CACHESTORE_SQLCP'
dann wird berichtet, dass ungefähr 12 GB verwendet werden. Unsere Instanz hat ca. 300 GB RAM drin.
Wir möchten die Diskrepanz verstehen und im Idealfall einige Schritte unternehmen, um sicherzustellen, dass der Plan-Cache effektiv genutzt wird (dh mehr als 300 Pläne zur Verbesserung der Cache-Trefferquote, die derzeit sehr schlecht ist). Diesen Raum berücksichtigen zu können, wäre der erste Schritt.
Irgendwelche Gedanken darüber, was die Diskrepanz sein könnte und warum dieser Bereich nicht zum Zwischenspeichern von Plänen verwendet wird?
quelle
money
?Antworten:
FWIW - und ich poste dies nur als vorübergehende Antwort, da ich dies auf keinen Fall zu einem verdaulichen Kommentar machen kann - Ich habe diese Abfragen ausgeführt und auch einige Unstimmigkeiten festgestellt:
Insbesondere ist die CACHESTORE_SQLCP-Summe in der zweiten Abfrage geringer als die vier Ergebnisse des kompilierten Plans in der ersten Abfrage, und auch unter anderen Cachestores wurde ein erheblicher Speicherangestellter verwendet. Dies ist eine niedrige VM, die nicht über 300 GB RAM verfügt, aber dennoch zeigt, dass diese Zahlen nicht immer korrelieren und sich gut summieren.
quelle