登录服务器一看,服务器也很卡,打开任务管理器,一看内存占有率99%了,在仔细一查看是“数据库占用了大量内存”,打开数据库一看是部署的时候没有对数据库实例设置“最大服务器内存”,下面就分享一下SQL Server数据库占用过高内存的处理方法。
一、手动清理SQL Server数据库占用物理内存
1、建立一个批处理文件
打开记事本输入如下两行命令后,单击保存,输入文件名,扩展名选“bat”。
net stop mssqlserver
net start mssqlserver
2、双击上一步建立的批处理文件,SQL Server服务重启大概10秒左右
一般运维人员都会定期,在服务器空闲时间做内存释放。
二、手动设置SQL Server数据库占用内存
SQL Server数据库默认是无限制占用内存的,SQL Server根据服务器的活动来增大或收缩缓冲区高速缓存,以使可用物理内存保持在4MB~10MB之间。
1、SQL Server数据库占用内存
(1)最小服务器内存(min server memory)
最小服务器内存保证了SQL Server实例的缓冲池可用的最小内存量。SQL Server不会在启动时立即分配最小服务器内存指定的内存量。不过,除非降低最小服务器内存的值,否则当内存使用量由于客户端负荷而达到该值后,SQL Server不能从已分配的缓冲池中释放内存。
(2)最大服务器内存(max server memory)
最大服务器内存避免了SQL Server缓冲池使用的内存量多于指定的内存量,这样剩余的可用内存可以用来快速启动其他应用程序。SQL Server不会在启动时立即分配最大服务器内存指定的内存量。内存使用量会随着SQL Server的需要增加,直到达到最大服务器内存指定的值。除非提高最大服务器内存的值,否则SQL Server不能超过此内存使用量。
2、设置方式
(1)将最小服务器内存和最大服务器内存设置为同一值。此值与达到该值后分配给SQL Server缓冲池的固定内存量相对应。
(2)将最小服务器内存和最大服务器内存设置成一个内存范围。这种方法在系统或数据库管理员希望配置SQL Server实例,同时又要考虑在同一台计算机上运行的其他应用程序的内存需求时很有用。
3、设置方法
右键数据库实例名–>单击“属性”,单击“内存”选项,进入如下界面进行设置最大和最小占用内存,具体分配多少根据个人实际应用而定,个人粗略建议:如果内存比较大不要超过总内存的70%;如果内存比较少,不要超过总内存的55%。
到此,SQL Server数据库占用过高内存的应急处理方法就分享完了,希望对大家能有所帮助。