如何解决SQL Server占用内存过多的问题

2016-02-19 21:17 5 1 收藏

今天图老师小编给大家介绍下如何解决SQL Server占用内存过多的问题,平时喜欢如何解决SQL Server占用内存过多的问题的朋友赶紧收藏起来吧!记得点赞哦~

【 tulaoshi.com - 编程语言 】

  经常看见有人问,MSSQL占用了太多的内存,而且还不断的增长;或者说已经设置了使用内存,可是它没有用到那么多,这是怎么一回事儿呢?

  首先,我们来看看MSSQL是怎样使用内存的。

  最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉。所以一般我们在看statistics io的时候,看到的physics read都是0。

  其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。

  所以用于关联和排序的列上一般需要有索引。

  再其次就是对执行计划、系统数据的存储,这些都是比较小的。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1625787.html

延伸阅读
解决SQL Server虚拟内存不足情况 症状 在具有 2 GB 或更多 RAM 的计算机上,除了 256 MB (SQL Server 7.0) 或 384 MB (SQL Server 2000) 虚拟地址空间之外,SQL Server 在启动过程中保留剩下的所有虚拟地址空间以供缓冲池使用。另...
标签: SQLServer
主要应用case语句来解决行转列的问题 行转列问题主要分为两类 1)简单的行转列问题: 示例表: id  sid           course  result 1   2005001 语文     80.0 2   2005001 数学     90.0 3   2005001 英...
标签: SQLServer
最近,为了能在数据库服务器中运行其他应用程序,在保持数据库操作系统版本不变的前提下对数据库服务器进行了软、硬件上的升级。在软件上,将操作系统从Windows 2000升级到Windows Server 2003;在硬件上,将服务器中的内存由原来的512MB增加到1GB(1024MB)。 在升级后的开始几个星期之内,服务器在使用中表现良好。但是不久后就发现,在服...
想必很多人都有过落枕的经历,大多数人应该都知道落枕是很痛苦的。早上起床后感觉莫名其妙的脖子疼痛,让人抓狂。那么该如何治疗落枕最有效呢?我们要懂得一些生活方法,如果不幸落枕,能抓紧时间自己治疗,下面就一起来看看落枕的治疗方法有哪些吧。 一般落枕经1~2次治疗即可治愈 有的患者是在颈部长期病变的基础上产生...
今天一个朋友电话过来咨询我有关 Windows Server 2003 32bit 企业版最大支持的物理内存容量,主要是因为正在运营的一台数据库服务器内存使用达到 2G,服务器效率非常低打算扩展内存,为 SQL Server 提供更多的内存。 经过确认,服务器是 HP G3 系列支持 PAE,即物理地址扩展,服务器应该最大支持 32GB,而 Windows Server 2003 32bit...

经验教程

24

收藏

95
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部