MS SQLServer占用过多内存问题

原创 2004年06月22日 20:18:00
MS SQLServer占用过多内存问题
 
    公司用的也是SQLServer,DB server有将近2G的memory,可SQLServer的内存占用率总能轻松达到1.5G左右,而且还不断增长,害的这边没礼拜要重起服务几次。有人针对这个问题提出了些解决办法:
 
    经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事?
  首先,我们来看看MSSQL是怎样使用内存的。最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。
    其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。所以用于关联和排序的列上一般需要有索引。
  再其次就是对执行计划、系统数据的存储,这些都是比较小的。我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。
 
ps:)我按文章的做了,收获是有些,可是不大。
        我打了微软的800技术咨询电话,微软告诉我这基本上是SQL Server本身的问题,他们不提倡通过应用程序释放内存,关键他也没有告诉我该怎样释放16.gif 看来这个问题基本上没法解决了,也许只能设置个内存最大值了:)谁有好办法赶紧说说。。。

SQL Server 2008 R2占用内存越来越大两种解决方法

SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解决方法就简单了,定期重启下SQL Server 2008 R2数据库服务即可,使用任务计划定...
  • longtingjing
  • longtingjing
  • 2015年06月30日 09:02
  • 11158

如何查看 SQL Server 占用内存

[sql] view plain copy  print? select *,CAST(cntr_value/1024.0 as decimal(20,1)) Memory...
  • CsethCRM
  • CsethCRM
  • 2016年12月28日 10:59
  • 990

SQL Server 2008 R2占用内存越来越大两种解决方法

SQL Server 2008 R2占用内存越来越大两种解决方法 [非程序和sql语句的问题] 事件缘由:本人在开发sql server数据库项目的过程中发现了这么一个问题,SQL Se...
  • English0523
  • English0523
  • 2015年11月13日 10:35
  • 10014

Sql Server 2008 R2占用内存一直增长,直到死锁的问题(已解决)

Sql Server 2008 R2占用内存一直增长,直到死锁的问题(已解决) 最近有一客户服务器,内存小点,内存占用很高,经查是sql server问题,只能重启Sql服务器来清理内存,后...
  • dxnn520
  • dxnn520
  • 2014年04月01日 14:33
  • 19777

SQL Server占用服务器内存过高

SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高。 查看内存状态: ...
  • shenwenbin0106
  • shenwenbin0106
  • 2017年07月11日 17:36
  • 3269

释放SQL Server占用的内存

由于Sql Server对于系统内存的管理策略是有多少占多少,除非系统内存不够用了(大约到剩余内存为4M左右),Sql Server才会释放一点点内存。所以很多时候,我们会发现运行Sql Server...
  • leamonjxl
  • leamonjxl
  • 2012年03月29日 14:22
  • 11580

SQLServer内存占用很大及登录问题。

进入sql server 2000企业管理器,选sql server 组,点右键,属性,内存,选动态地配置sql server 内存,最小值0,最大值建议选物理内存地1/2,如果经常使用sql ser...
  • promotercx
  • promotercx
  • 2012年05月24日 13:53
  • 2699

【转载】SQL Server占用内存过大导致服务器死机问题的解决

使用MSSQL的站长朋友都会被MSSQL数据库吃内存的能力佩服得五体投地,一个小小的网站,运行若干天之后,MSSQL就会把服务器上所有的内存都吃光,此时你不得不重新启动一下服务器或MSSQL来释放内存...
  • lishirong
  • lishirong
  • 2014年12月02日 09:52
  • 1787

怎样解决SQL Server内存不断增加问题

在启用sqlserver服务后,发现进程sqlservr.exe的内存使用量从开始的100多MB持续增加,很快就高达1G以上,造成机器运行缓慢、卡机,严重影响使用。sql server 在查询大数据量...
  • libaineu2004
  • libaineu2004
  • 2014年04月01日 10:30
  • 4872

SQL SERVER 内存分配及常见内存问题(1)——简介

一、问题: 1、SQL Server 所占用内存数量从启动以后就不断地增加:       首先,作为成熟的产品,内存溢出的机会微乎其微。对此要了解SQL SERVER与windows是如何协调、共...
  • DBA_Huangzj
  • DBA_Huangzj
  • 2012年05月03日 14:14
  • 9031
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MS SQLServer占用过多内存问题
举报原因:
原因补充:

(最多只允许输入30个字)