SQLServer数据库占用过多内存时产生的一些问题

在实际操作种经常会有网友会问道,SQL Server数据库占用了太多的内存,而且其还会不断的增长;或是已经设置了相关的使用内存,可是它却没有用到那么多,这是怎么一回事儿呢?

创新互联-专业网站定制、快速模板网站建设、高性价比江夏网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式江夏网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖江夏地区。费用合理售后完善,十多年实体公司更值得信赖。

下面,我们来具体看以看SQL Server数据库是怎样使用内存的。

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

其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。所以用于关联和排序的列上一般需要有索引。

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

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

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

上述的相关内容就是对SQL Server数据库占用过多内存的问题的描述,希望会给你带来一些帮助在此方面。

网站栏目:SQLServer数据库占用过多内存时产生的一些问题
分享URL:http://www.hantingmc.com/qtweb/news30/82330.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联