即使对于相同的查询,计划缓存和查询存储也不相同。当寻找特定查询或一组相关查询的性能或监视信息时,每个查询的优点/缺点是什么?
我的在线研究表明的总体印象是,查询存储可以比计划缓存查询得更快(我不确定为什么),并且它的条目往往持续更长时间(这是可配置的),但我没有发现任何说法关于计划缓存优于查询存储的情况。
假设我不关心 SQL Server 2017 和 2022 引入的使用查询存储进行自动性能调优的功能。相反,假设我比较查询存储和计划缓存是出于两者可以执行的任务的目的。
即使对于相同的查询,计划缓存和查询存储也不相同。当寻找特定查询或一组相关查询的性能或监视信息时,每个查询的优点/缺点是什么?
我的在线研究表明的总体印象是,查询存储可以比计划缓存查询得更快(我不确定为什么),并且它的条目往往持续更长时间(这是可配置的),但我没有发现任何说法关于计划缓存优于查询存储的情况。
假设我不关心 SQL Server 2017 和 2022 引入的使用查询存储进行自动性能调优的功能。相反,假设我比较查询存储和计划缓存是出于两者可以执行的任务的目的。
一点
与计划缓存相比,我通常更喜欢查询存储,因为它是性能信息的更稳定、更可靠的来源。计划缓存会因多种原因而清除并丢失计划,任何愚蠢到足以启用临时工作负载优化的人都可能会错过大量信息。
计划缓存有更详细信息的一件事是查询内存授予。查询存储仅显示查询使用了多少内存,但计划缓存还包含有关授予的内存量的详细信息。
我经常发现在调整查询和调整资源调控器设置时比较授予的数量和使用的数量很有用。我看到的大多数拥有大量内存的服务器都存在 ~25% 最大内存授予限额太高的问题,而计划缓存是此类使用信息的唯一真正的内置来源。一个缺点是内存变动较大的服务器有时计划缓存的寿命很短。