sql server 在占用服务器内存居高不下怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 在占用服务器内存居高不下怎么办相关的知识,希望对你有一定的参考价值。

经常使用MSSQL的朋友都会发现一个小小的网站在运行若干天后MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或mssql来释放内存,有人认为是 MSSQL有内存泄露问题,其实不然,微软给我们了明确说明:在您启动SQL Server 之后,SQL Server内存使用量将会持续稳定上升,即使当服务器上活动很少时也不会下降。另外,任务管理器和性能监视器将显示计算机上可用的物理内存稳定下降,直到可用内存降到 4 至 10 MB 为止。

仅仅出现这种状态不表示内存泄漏。此行为是正常的,并且是 SQL Server 缓冲池的预期行为。
默认情况下,SQL Server 根据操作系统报告的物理内存加载动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止内存页面交换(在 4 至 10 MB 之间),SQL Server缓冲池就会继续增大。像在与SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配变化。
更多信息
您可以通过服务器内存最小值和服务器内存最大值配置选项设置 SQL Server数据库引擎使用的内存(缓冲池)量的上下限。在设置服务器内存最小值和服务器内存最大值选项之前,请查阅以下 Microsoft 知识库文章中标题为\'内存\'一节中的参考信息:319942 HOW TO:Determine Proper sql server(WINDOWS平台上强大的数据库平台) Configuration Settings(确定正确的 sql server(WINDOWS平台上强大的数据库平台) 配置设置)
请注意,服务器内存最大值选项只限制 SQL Server 缓冲池的大小。服务器内存最大值选项不限制剩余的未保留内存区域,sql server(WINDOWS平台上强大的数据库平台) 准备将该区域分配给其他组件,例如扩展存储过程、COM 对象、以及非共享 DLL、EXE 和 MAPI 组件。由于前面的分配SQL Server专用字节超过服务器内存最大值配置是很正常的。有关此未保留内存区域中分配的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:316749 PRB:在使用大量数据库时可能没有足够的虚拟内存

下面我们就来实战如何限制MSSQL内存使用:
第一步:打开企业管理器双击进入要修改的MSSQL.
第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话框(最好打上SQL SP4补丁)
第三步:点击内存选项卡. 在这里,你会看到MSSQL默认设置为使用最大内存,也就是你所有的内存,根据你的需要,设置它的最大值(一般为物理内存-128M)和最小值(一般为最大内存的1/4)吧.
第五步:设置完毕,重启MSSQL服务,配置即可生效!
参考技术A 1、做个软件自动给sql server 2005数据库强制释放内存;
注:这个是可以的,但是这样做很不合理;一方面服务器上的web系统正在运行,如果此时我们把系统的内存释放掉了这样肯定会引起网页OA系统的异常。
2、给sql server 2005 做个任务来释放内存;这个好像是可以的!但是这个也是很麻烦的事情。
很明显上面的方法都不是最理想的。

下面就是正确处理由于sql server 2005引起的数据库内存居高不下的办法:
首先我们需要登录 sql server 2005的资源管理器
鼠标右击我们sql server 2005的服务器,然后选择“属性”选项

找到指定数据库服务器的属性中的“内存”属性,并点击

接下来就是配置数据库内存了,可以参考我本地的配置如下图:

最后点击“确定”按钮就可以了!
注:这篇文章是我通过自己琢磨而得,如果对大家有帮助的话,大家可以借鉴一下!同时,也给自己做个备忘!
参考技术B sql
server
是不会自动释放内存,但你可以在sql
server
的属性,内存选项中设定最大服务器内存,就可以解决内存占用太高的问题
参考技术C 可以设置sql
server
使用内存的大小。
在“sql
server
management
studio”->sql服务器上点右键->内存->最大服务器内存就是限制的大小了。
参考技术D 下面就是正确处理由于sql
server
2005引起的数据库内存居高不下的办法:
首先我们需要登录
sql
server
2005的资源管理器
鼠标右击我们sql
server
2005的服务器,然后选择“属性”选项
找到指定数据库服务器的属性中的“内存”属性,并点击
接下来就是配置数据库内存了,可以参考我本地的配置如下图:
最后点击“确定”按钮就可以了!

怎么处理SQL Server数据库占用过多内存

参考技术A 可以设定SQL Server的,内存占用。
具体的参看:http://jingyan.baidu.com/article/624e74594ad38434e9ba5a4b.html

提示的是:
1、在服务器上,合理的,较多的内存占用可以加快SQL的服务能力。
2、如个人电脑上测试使用SQL Server,不用时,可以去控制面版中的服务中停止相关的服务,并设定为不自动起动,可以最大的减小SQL Server对电脑的资源占用。

以上是关于sql server 在占用服务器内存居高不下怎么办的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 缓存清除与内存释放

SQL Server 缓存清除与内存释放

ms sql server缓存清除与内存释放

怎么处理SQL Server数据库占用过多内存

SQL Server 2008 R2 持续占用内存直到服务器死机,怎么解决?

SQL Server占用内存过高,啥原因导致的,用啥方法可以解决