最近几天,在我们的组织中,我们面临着一个奇怪的问题。
我们的 SQL Server 有足够的内存(256 GB)和 CPU 核心。没有内存压力(dm_os_sys_memory 的结果是“可用物理内存很高”)。
唯一的问题是,过程统计信息 sys.dm_exec_procedure_stats 经常被清除。统计数据甚至不会保留一个小时。
我们需要统计数据的原因是,它是在 DMV dm_exec_procedure_stats 的帮助下每天收集的。而且,我们的 SQL 开发人员过去常常对存储过程进行优化,一旦完成,为了了解调整活动的有效性,就会在收集的历史统计数据和当前统计数据之间进行比较。
由于程序统计信息不保留在缓存中,因此我们无法设置任何基准。
请提出一些解决方案。
版本:Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) 企业版:(64 位)Windows Server 2012 R2 Standard 6.3(内部版本 9600:)
有多种方法可以清除缓存,从整体实例配置更改到数据库更改,再到在过程中使用重新编译。
此链接很好地说明了可能导致问题的原因,但我认为您必须进行一些调查。
https://www.sqlskills.com/blogs/glenn/eight- different-ways-to-clear-the-sql-server-plan-cache/