首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

服务器内存96%,如何限制SQL server内存

最近帮客户部署了一套监控系统,有几台服务器不定时报内存使用率96%以上。

登录到服务器中,查看内存使用情况,sql server内存占用了太多内存了。

先简单说一下SQL server的内存管理机制,SQL Server 数据库的内存使用原则是按需分配,且贪婪(用完不还)。它不会自动释放内存,因此执行结果集大的sql语句时,数据取出后,会一直占用内存,直到占满机器内存(并不会撑满,还是有个最大限制,比机器内存稍小),在重启服务前,sqlserver不会释放该内存,也没有任何办法可人为释放。

原因是它的存储引擎本身是一个Windows下的进程,所以在使用内存时和其它Windows进程是一样的,都要向Windows申请内存,申请到内存之后,SQL Server的内存使用可以粗略地分为两个部分:一是缓冲池内存,被数据页和空闲页占用;二是非缓冲内存,被线程、DLL、链接服务器等占用。

那怎么解决呢?最直接的办法是:人为修改最大可占用物理内存进行限制。

那么将sql server占用内存控制在80%较为合理。为什么要控制sql server占用内在80%较为合理,因为sql server占用内存的主要原因是缓存,只有合理最大化的利用内存缓存数据才能提高访问速度。而服务器本身还需要一定的内存远行,所以只需要预留20%的内存给服务器使用足够,这样就留有最大化的内存给sql server使用。当然,这个不是标准值,还要根据服务器的负载情况来判定,如果设置80%还是服务器内存使用率比较高,可以再调低些。

操作步骤:

管理员用户登录数据库客户端(Microsoft SQL Server Management Studio),在实例名(树形菜单根节点,显示登录名那栏)上右键,选择属性-->内存,设置“最大服务器内存”,单位为MB,可根据实际内存调整。

调整前的配置

调整后的配置

确定后,内存会慢慢降下来了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OjDrh3wQgWGBaK7noPUzrWfA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券