我们有一个SQL Server 2016 SP1,最大内存设置为24GB。
该服务器具有大量编译,其中只有10%的编译来自临时查询。因此,新编译的计划应存储在计划缓存中,但计划缓存的大小不会增加(约3.72GB)。
我怀疑本地内存压力会导致从缓存中删除计划。计划缓存压力限制为5GB。(0-4GB的可见目标内存的75%+ 4GB-64GB的可见目标内存的10%+> 64GB的可见目标内存的5%)。当缓存存储达到压力限制的75%时,应从缓存中删除计划。就我而言,5 GB的75%为3.75 GB。因此,这可能是高编译率的原因。
有没有一种方法可以测量(性能,扩展事件等)从缓存中删除计划?这样我就可以确定本地内存压力确实是高编译的原因吗?