日期:2011-05-02 15:21:00 来源:本站整理
关于MSSQL占用过量内存的问题[MSSQL防范]
本文“关于MSSQL占用过量内存的问题[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
常常瞥见有人问,MSSQL占用了太多的内存,并且还不断的增长;大概说已经设置了利用内存,但是它没有效到那么多,这是怎么一回事儿呢?
首先,我们来看看MSSQL是怎样利用内存的.
最大的开销普通是用于数据缓存,假如内存充足,它会把用过的数据和认为你会用到的数据通通扔到内存中,直到内存不足的时刻,才把命中率低的数据给清掉.所以普通我们在看statistics io的时刻,看到的physics read都是0.
其次就是查询的开销,普通地说,hash join是会带来对比大的内存开销的,而merge join和nested loop的开销对比小,还有排序和中间表、游标也是会有对比大的开销的.
所以用于关联和排序的列上普通需求有索引.
再其次就是对履行筹划、系统数据的存储,这些都是对比小的.
我们先来看数据缓存对性能的影响,假如系统中没有别的利用程序来争取内存,数据缓存普通是越多越好,乃至有些时刻我们会强行把一些数据pin在高速缓存中.但是假若有别的利用程序,固然在需求的时刻MSSQL会释放内存,但是线程切换、IO等候这些工作也是需求时间的,所以就会造成性能的降低.这样我们就必须设置MSSQL的最大内存利用.可以在sql server 属性(内存选项卡)中找到配置最大利用内存的地方,大概也可以利用sp_configure来完成.假如没有别的利用程序,那么就不要限制MSSQL对内存的利用.
然后来看查询的开销,这个开销明显是越低越好,因为我们不能从中得到好处,相反,利用了越多的内存大都意味着查询速度的降低.所以我们普通要避免中间表和游标的利用,在常常作关联和排序的列上成立索引
以上是“关于MSSQL占用过量内存的问题[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论