升级 RAM 是不是会自动增加对 SQL Server 的分配?

Posted

技术标签:

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

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

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

    在通过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 不会“自动”更改任何设置,包括内存使用情况。默认情况下,当它被安装时,它被设置为“无限” *实际上不是无限的。如果您为服务器设置最大/最小内存使用量,它将使用它所需的内存,直到这些值。假设这些金额实际可用。 【参考方案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)"

以上是关于升级 RAM 是不是会自动增加对 SQL Server 的分配?的主要内容,如果未能解决你的问题,请参考以下文章

即使有事务回滚,SQL 标识(自动编号)也会增加

RAM / Disk Memory的访问速度是不是取决于其容量?

Serv-U 的升级及数据备份和迁移

即使使用事务回滚,SQL标识(自动编号)也会增加

将系统ram升级到16 GB面临错误:Java运行时环境检测到致命错误:

SQL语句批量增加减少数量