如何解决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的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。

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

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

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

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

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

(本文来源于图老师网站,更多请访问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...

经验教程

527

收藏

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