MS SQLSERVER数据库内存不释放问题?

大家对MSSQLSERVER数据库长时间运行内存慢慢沾满有什么应对办法吗?(重启除外)

参与28

3同行回答

AcdanteAcdante技术总监SHFY
1)首先要明确MS SQL SERVER的内存管理机制,它与Oracle不同,如果没有设置最大内存使用限制,那么,sql server会一直去申请内存,直到内存快被占用殆尽,才会释放一点点。     SQL Server存储引擎本身是一个Windows下的进程,所以SQL Server使用内存和其它Windows进程一样,都需要向...显示全部

1)首先要明确MS SQL SERVER的内存管理机制,它与Oracle不同,如果没有设置最大内存使用限制,那么,sql server会一直去申请内存,直到内存快被占用殆尽,才会释放一点点。
    SQL Server存储引擎本身是一个Windows下的进程,所以SQL Server使用内存和其它Windows进程一样,都需要向Windows申请内存。从Windows申请到内存之后,SQL Server使用内存粗略可以分为两部分:缓冲池内存(数据页和空闲页),非缓冲内存(线程,DLL,链接服务器等)。而缓冲池内存占据了SQL Server的大部分内存使用。缓冲池所占内存也就是图2最大最小内存所设置的,因此sqlservr.exe所占的内存有可能会大于实例属性中内存设置中所设置的最大内存。

  还有一点是,SQL Server使用内存的特点是:有多少用多少,并且用了以后不释放(除非收到Windows内存压力的通知)
2)内存释放
参考
https://www.cnblogs.com/luluping/archive/2010/11/26/1888364.html

)=====================================(
通过Sql Server Management企业管理器进行动态控制。
连接到企业管理器之后打开Sql Server实例的属性面板,
找到内存设置,改变其中的最大服务器内存使用即可

收起
互联网服务 · 2017-12-25
浏览3564
pysx0503pysx0503系统工程师第十区。散人
的确,MS SQL的内存机智就是这样,基本上都会吃到70-80%左右。显示全部

的确,MS SQL的内存机智就是这样,基本上都会吃到70-80%左右。

收起
系统集成 · 2017-12-26
浏览2931
hufeng719hufeng719联盟成员系统工程师某钢铁企业
楼上正解。亲身经历过sqlserver2008几乎耗尽系统内存的情况。原来还以为是系统有漏洞,存在内存泄漏的问题。后来新装的系统更新的补丁包,仍然会耗用很大内存。如果楼主担心这个的话,可以修改数据库服务器属性中的内存选项,设置最大服务器内存值,这样进程占用的内存就不会超过...显示全部

楼上正解。亲身经历过sqlserver2008几乎耗尽系统内存的情况。原来还以为是系统有漏洞,存在内存泄漏的问题。后来新装的系统更新的补丁包,仍然会耗用很大内存。如果楼主担心这个的话,可以修改数据库服务器属性中的内存选项,设置最大服务器内存值,这样进程占用的内存就不会超过你设置的这个值。---亲测可用。

收起
能源采矿 · 2017-12-26
浏览2942

提问者

nqliu
系统工程师河钢集团唐钢公司
擅长领域: 服务器边缘计算云计算

问题来自

问题状态

  • 发布时间:2017-12-25
  • 关注会员:4 人
  • 问题浏览:6797
  • 最近回答:2017-12-26
  • X社区推广