SqlServer运维——最大服务器内存
1. 关于最大服务器内存
可以,MSSM数据库连接-->右键:服务器属性 进行查看和配置
1.对CPU的使用分配,可以选择SQL server使用或者不使用某些CPU线程
- 默认是勾选以下设置,一般不需要做什么设置
- 自动设置所有处理器的处理关联掩码(P)
- 自动设置所有处理器的I/O关联掩码(I)
2.内存配置,通过对操作系统内存的总体应用,从而优化数据库性能
-
最大服务器内存:SQL server的Buffer Pool最大使用的内存量。默认值2147483647MB。
- 我本机安装后创建的数据库实例,没有做任何修改,默认值就是:2147483647MB。
- 当配置为0或者超过当前系统最大内存值时,使用系统最大内存量。当设置小于当前系统的最大内存值,并且大于最小内存值时,SQL server实例到达设置的最大内存量后,将不会继续扩大内存的使用量。
- Sqlserver对系统内存的管理原则是:按需分配,且贪婪(用完不还)。它不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限制,比机器内存稍小),在重启服务前,sqlserver不会释放该内存,也没有任何办法可人为释放
-
最小服务器内存:为SQL server实例预留能够使用的内存,当服务器内存出现压力,数据库收缩持有内存量,到达配置值将不在收缩。
2. 数据库的最大服务器内存
- MSSM数据库连接-->右键:服务器属性--> 内存:最大服务器内存:设置位物理内存减去4G
-
金蝶云星空官方建议最大内存配置为物理内存-4GB(可按物理内存数量,预留4-8GB内存给数据库服务器所在的操作系统使用)
- 例如:
- 如果数据库服务器物理内存是32G,最大服务器内存可设置为28G=28*1024MB
- 如果数据库服务器物理内存是128G,最大服务器内存可设置为120G=120*1024MB
-
一般情形:数据库服务器和服务端是分开部署的,纯数据库服务器的最大服务内存,可以使用物理内存的75%,比如说物理内存:100G,则数据库的最大服务器内存:75G
- 注意1:上述是有前提条件的:数据库服务器仅做数据库服务器使用,该服务器上没有其他非系统应用。简而言之:服务器专门供数据库使用,不要将其他服务(例如IIS,中间层应用服务等)安装在同一台机器上
- 注意2:数据库中设置的最大服务器内存,并不是值SQLServer在该服务器上最大就使用这么多内存,
最大服务器内存选项仅限制 SQL Server 缓冲池的大小。 最大服务器内存选项不限制 SQL Server 为分配其他组件(例如,扩展存储过程、COM 对象、非共享 DLL 和 EXE)而保留的剩余未预留内存区域。
- 注意3:若是不小心将最大服务器内存设置为非常小的值,会导致
将“最大服务器内存(MB)”设置为最小值甚至可能导致无法启动 SQL Server。 如果在更改此选项后无法启动 SQL Server,请使用 -f 启动选项来启动它,并将“最大服务器内存(MB)”重置为其之前的值。 有关详细信息,请参阅数据库引擎服务启动选项。
-
3. 其他说明
数据库服务器配置及软件版本
- 金蝶云星空8.2
- SQL Server2016 64位
- 操作系统:WindowsServer2019,64位,32核,80G内存