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

2016-01-29 16:08 2 1 收藏

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

【 tulaoshi.com - SQLServer 】

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

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

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

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

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

来源:https://www.tulaoshi.com/n/20160129/1497587.html

延伸阅读
今天新装了MSSQL SERVER 2005 感觉界面比以前更友好 在想.NET 的界面过度 安装完毕 新建一数据库 插入条记录 发现回显的全部都是 ?????.... 乱码.... 仔细查看了半天 发现数据库的排序规则是德语... 修改方法:数据库属性-选项-排序规则 设置成 CHINESE_PRC_CI_AI 就可以了
标签: Web开发
浏览本站的 Javascript教程 栏目内容。 常规循环引用内存泄漏和Closure内存泄漏 要了解javascript的内存泄漏问题,首先要了解的就是javascript的GC原理。 我记得原来在犀牛书《JavaScript: The Definitive Guide》中看到过,IE使用的GC算法是计数器,因此只碰到循环 引用就会造成memory leakage。后来一直觉得和观察到的现象很不一...
标签: 浏览器
如何降低Firefox内存占用 通常情况下,Firefox是不会占用到让你觉得夸张的内存量的,但它也会取决于其它的资源,例如插件、主题和附加软件的数量。 因此,如果有能够尽可能地减小内存的占用量的方法还是相当值得推荐的。下面就是一些简单的步骤,让你能够节约计算机内存的使用量。 请遵照下面几个步骤,检查一下究竟是什么原因...
标签: 电脑
病毒和木马   我们都知道病毒和木马是破坏计算器的主要因素,病毒和木马的侵害是非常大的,这点事情还是轻而易举可以办到的。例如大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。遇到病毒,首先要想到的就是杀毒软件了,最好是在安全模式下进行病毒的查杀,这样查杀效果更好更彻底。杀毒软件要经常的更新,这样才能确...
标签: 电脑入门
Superfetch并不是一个新的技术,在Vista时代就已经开始采用,不过鉴于用过Vista的人数比较少,而XP时代的各种电脑技巧始终还深入人心,所以很多人都在疑问为何Windows 7内存占用如此之大。 Superfetch内存管理机制会将用户可能使用的应用程序页面利用内存可用空间进行预加载;尽可能地避免系统发生从硬盘的页面调用;让应用程序最快速度开启;不...

经验教程

272

收藏

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