SQL Server 数据库服务器内存配置选项https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/server-memory-server-configuration-options?view=sql-server-ver17一、问题背景

在 SQL Server 生产环境中,经常会看到数据库服务占用大量内存。很多人会误以为:服务器有多少内存,就尽量全部给 SQL Server。

这个想法不太稳。

SQL Server 确实需要大量内存来缓存数据、提升查询性能,但 Windows Server、杀毒软件、备份软件、监控 Agent、远程桌面等也需要内存。如果 SQL Server 把内存吃得太满,可能会导致系统卡顿、远程连接慢,甚至影响数据库稳定性。

微软官方建议通过 max server memory (MB) 限制 SQL Server 最大可使用内存,避免 SQL Server 给操作系统和其他程序造成内存压力。


二、这个配置是干什么的?

在 SQL Server Management Studio 中进入:

右键服务器 → 属性 → 内存

可以看到:

最小服务器内存(MB)
最大服务器内存(MB)

其中重点关注:

最大服务器内存(MB)

它表示:

SQL Server 实例最多可以使用多少内存

注意,这不是修改 Windows 服务器总内存,而是限制 SQL Server 数据库引擎的最大内存使用范围。


三、官方推荐怎么理解?

微软官方文档中,min server memory (MB) 默认值和推荐值都是 0max server memory (MB) 推荐设置为:其他进程未使用的可用系统内存的 75%。(Microsoft Learn)

也就是说,最大服务器内存不是固定填多少,而是要结合服务器实际情况。

简单理解:

服务器总内存
- Windows 系统预留内存
- 杀毒、备份、监控等程序内存
- 其他业务程序内存
= SQL Server 可设置的最大内存参考值

微软官方也提醒:max server memory (MB) 设置太高,SQL Server 可能会和系统或其他实例争抢内存;设置太低,则可能造成 SQL Server 内存压力和性能问题。(Microsoft Learn)


四、图形界面怎么设置?

打开 SQL Server Management Studio,按下面步骤操作:

1. 连接 SQL Server 实例
2. 右键服务器名称
3. 点击“属性”
4. 选择“内存”
5. 修改“最大服务器内存(MB)”
6. 点击“确定”

例如服务器总内存是 64GB,计划给 SQL Server 设置 50GB,这里不能填 50,而是要填 MB:

50GB × 1024 = 51200MB

所以填写:

最大服务器内存(MB):51200

最小服务器内存建议保持默认:

最小服务器内存(MB):0

五、配置值和运行值怎么看?

界面下方有两个选项:

配置值
运行值

可以简单理解为:

配置值:当前保存的参数值
运行值:当前实际生效的参数值

正常情况下,修改最大服务器内存后会动态生效,一般不需要重启 SQL Server 服务。微软官方文档也说明,min server memorymax server memory 可以重新配置,并且相关配置会立即生效。(Microsoft Learn)


七、总结

SQL Server 最大服务器内存不是越大越好,核心原则是:

SQL Server 要够用
Windows 系统也要有余量
生产环境优先稳定

本次配置建议:

最小服务器内存(MB):保持 0
最大服务器内存(MB):按服务器总内存和业务负载设置
50GB 对应填写:51200

数据库不是吃自助餐,不能一口气把系统内存全炫了。给 SQL Server 设上限,本质上是给生产环境留后路。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐