【问题标题】:Does Upgrading RAM automatically increases allocation to SQL Server?升级 RAM 是否会自动增加对 SQL Server 的分配?
【发布时间】:2019-09-24 13:41:49
【问题描述】:

关于 RAM、升级和 SQL Server 使用的 2 个问题 -

  1. 升级 RAM 是自动增加对 SQL Server 的分配还是必须通过 SP_CONFIGURE 手动配置?

  2. 在通过SP_CONFIGURE手动配置之前,我们能知道最初分配给SQL Server的是什么吗?如果我从SELECT object_name, cntr_value FROM SYS.DM_OS_PERFORMANCE_COUNTERS WHERE counter_name IN ('Total Server Memory (KB)','Target Server Memory (KB)') 收集值,我可以找到,但我没有。 那么,有没有办法找到历史配置呢?

--在“思想”中……

【问题讨论】:

  • 虽然具体的答案需要知道您使用的是哪个版本的 SQL Server,但this article 给了它一个很好的处理方法。 TL; DR:“无论您在系统中放入多少内存,SQL Server 都会使用它所能获得的所有内存,直到它在内存中缓存整个数据库,然后再缓存一些。”
  • 我一直认为 SQL Server 默认会使用所有可用的 RAM,除非您特别设置了通常不建议的下限
  • 为什么要问这个问题?你有实际问题吗?您添加 RAM,除非您明确指定上限,否则 SQL Server 会使用它。我们不知道你是否这样做。您可以在 SSMS 中的服务器属性中进行检查
  • 性能计数器也与此问题无关,也与 配置 无关。顾名思义,这些是 Windows 的性能计数器
  • 添加更多 RAM 不会“自动”更改任何设置,包括内存使用情况。默认情况下,当它被安装时,它被设置为“无限” *实际上不是无限的。如果您为服务器设置最大/最小内存使用量,它将使用它所需的内存,直到这些值。假设这些金额实际可用。

标签: sql-server performancecounter


【解决方案1】:

您无法从任何标准表中获取历史配置值(除了一些非常深奥的东西)。

SQL Server 是否会自动使用所有可用内存仅取决于最大内存配置。它的设计目的是使用任何可用的内存,直到配置的最大值,除了为操作系统留下一些内存。

如果操作系统标记其内存不足,SQL Server 将在必要时从其进程中释放内存。通常它很优雅,但操作系统也可能迫切需要内存,SQL Server 也会对此做出响应。它开始快速转储页面,您通常会在 SQL Server 错误日志中看到这一点。

【讨论】:

  • 谢谢@Greg。您还会发布什么类型的 SQL Server 的SYS.DM_OS_PERFORMANCE_COUNTERS 告诉我来自操作系统的内存压力。我可以在下面挖掘这些 - "Checkpoint pages/sec", "Background writer pages/sec", "Pressure evictions (pages/sec)"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 2021-01-07
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多