更改“最大服务器内存”除了清除计划缓存并(显然)更改内存设置还有什么作用?


8

在32 GB内存和4个内核,60-80个并发连接上运行SQL Server 2012 SP3,同时具有很大的临时工作负载,我们看到SQL Server进程(CPU)高峰,并且每天在不可预测的时间高峰一次或两次。我们正在努力确定峰值的根本原因。同时,我们发现更改最大内存设置(向上或向下)似乎是使CPU负载恢复正常的唯一方法。

检查日志并搜索StackExchange(https://dba.stackexchange.com/a/183276),我们看到通过更改最大内存设置可以刷新计划缓存。但是,如果我们通过DBCC FREESYSTEMCACHE('SQL Plans')刷新计划缓存,则CPU负载不会恢复正常。

由于更改“最大内存”设置可以解决问题,无论天气如何增加或减少,该问题似乎都与“最大服务器内存”设置没有直接关系。因此,我们试图了解更改内存设置的其他作用,然后使用该信息来帮助确定CPU峰值的根本原因。


您仅在此处清除单个缓存,就会发现有多个缓存,请阅读dba.stackexchange.com/questions/56852/…–
Nic

Answers:


3

参考:服务器内存服务器配置选项

max server memory 控制SQL Server的内存分配,包括(基本上是在sys.dm_os_memory_clerks中找到的任何内存事务):

  • 缓冲池
  • 编译内存
  • 所有缓存
  • QE内存授予
  • 锁管理器内存
  • clr记忆

因此,所有这些组件都将受到max server memory设置更改的影响。

附带一提,这将是查找导致CPU峰值的原因的非常困难的路径。建议您使用以下文章进行故障排除。

  1. 对SQL Server CPU性能问题进行故障排除 by Joe Sack
  2. 我如何找出重击SQL Server的原因?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.