关于MSSQL占用过多内存的问题

原创 2003年08月18日 14:13:00
经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?
首先,我们来看看MSSQL是怎样使用内存的。
最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。
其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。
所以用于关联和排序的列上一般需要有索引。
再其次就是对执行计划、系统数据的存储,这些都是比较小的。

我们先来看数据缓存对性能的影响,如果系统中没有其它应用程序来争夺内存,数据缓存一般是越多越好,甚至有些时候我们会强行把一些数据pin在高速缓存中。但是如果有其它应用程序,虽然在需要的时候MSSQL会释放内存,但是线程切换、IO等待这些工作也是需要时间的,所以就会造成性能的降低。这样我们就必须设置MSSQL的最大内存使用。可以在SQL Server 属性(内存选项卡)中找到配置最大使用内存的地方,或者也可以使用sp_configure来完成。如果没有其它应用程序,那么就不要限制MSSQL对内存的使用。

然后来看查询的开销,这个开销显然是越低越好,因为我们不能从中得到好处,相反,使用了越多的内存多半意味着查询速度的降低。所以我们一般要避免中间表和游标的使用,在经常作关联和排序的列上建立索引。

关于MSSQL占用过多内存的问题

  • zgqtxwd
  • zgqtxwd
  • 2008年04月29日 23:23
  • 143

解决Apache长时间占用内存大的问题,Apache 内存优化方法

问:为什么服务器在连续运行多天后或访问峰值后,进程中的一个Apache.exe占用内存几百兆不减少? 答:用记事本打开apache2\conf\httpd.conf, 我在centos5上装了kl...
  • binyao02123202
  • binyao02123202
  • 2013年08月21日 20:58
  • 15878

MSSQL 服务器中 进程sqlservr.exe占用内存过高的问题

在启用sqlserver服务后,发现进程sqlservr.exe的内存使用量从开始的100多MB持续增加,很快就高达5G以上,造成机器运行缓慢、卡机,严重影响使用, 估计可能是对数据库操作时,数据库...
  • levy_cui
  • levy_cui
  • 2016年04月13日 10:22
  • 3283

MSSQL占用内存过大的解决方法

下面我们就来实战如何限制MSSQL内存使用:   第一步:打开企业管理器双击进入要修改的MSSQL.   第二步:在左侧MSSQL上点击右键,选择属性,弹出SQL Server属性(配置)对话...
  • lishimin1012
  • lishimin1012
  • 2017年12月26日 11:00
  • 90

清理MSSQL内存占用的存储过程

对于内存有限的电脑来说,MSSQL运行一段时间后,会缓存很多数据库数据,使用本存储过程,可以设置MSSQL的使用内存变小,再恢复,从降低他的内存使用量。 IF EXISTS (SELECT * FRO...
  • ouyongke
  • ouyongke
  • 2015年10月10日 10:04
  • 255

关于占用过多内存的问题

  • zgqtxwd
  • zgqtxwd
  • 2008年04月28日 06:44
  • 135

解决liunx的Slab占用比较高的有关问题

liunx的Slab占用比较高的问题 最近经常报内存超过80%的阀值. 统计了下内存实际使用只有1.6G,希望能帮我们分析下为什么内存的使用率显示使用了3178M.   -...
  • he_yun_c
  • he_yun_c
  • 2017年12月05日 14:07
  • 153

firefox4占用内存过多

1.除默认主题外删除所有的主题2.disable所有的plugin3.disable不必要的addone
  • beimuaihui
  • beimuaihui
  • 2011年03月29日 15:36
  • 466

解决MSSQL占用过多内存的简单方法

  • zgqtxwd
  • zgqtxwd
  • 2008年04月29日 20:57
  • 144

dubbo问题记录-多注册中心配置错导致爆内存

问题描述多个系统间对接,用到多个注册中心,正常配置,然而一次重启后发现启动一段时间后接口服务就挂掉...
  • u013960139
  • u013960139
  • 2017年06月16日 18:54
  • 793
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于MSSQL占用过多内存的问题
举报原因:
原因补充:

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