网站公告列表     抗震救灾前线急需物品清单以及捐款方法  [lwyx  2008年5月16日]        
加入收藏
设为首页
繁體中文
您现在的位置: 五月雪电脑教程网 >> 数据库 >> SQL Server >> 正文
SQL Server数据库占用过多内存的解决方法          
SQL Server数据库占用过多内存的解决方法
作者:佚名 文章来源:本站原创 点击数: 更新时间:2008-6-5 6:39:37
关键字信息载入中...
广告载入中...

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

下面,我们来具体看以看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对内存的使用。

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

文章录入:llm64    责任编辑:lwyx 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网 络 热 门
    网络热门信息载入中...
    最 新 热 门
    最新热门信息载入中...
    最 新 推 荐
    最新推荐信息载入中...
    相 关 文 章
    相关文章信息载入中...
    相 关 评 论
    相关评论信息载入中...

    Copyright @ 2005 2006 五月雪电脑教程网
    中华人民共和国信息产业部ICP备案号: 闽ICP备 05014026
    教程网技术支持:QQ:75484101 友情提供
    统计进行中...统计进行中...

    讲解数据库变慢的三种情…
    全面解析基于空间数据库…
    讲解MySQL数据库字符集出…
    详细讲解数据库具体分类…
    不同于其它大部分的SQL数…
    如何做好Oracle数据库管…
    当多个用户访问同一DB数…
    如何处理SQL Server 200…
    实例讲解两台SQL Server…
    SQL Server数据库事务日…
     姓 名:
     评 分:
    1分 2分 3分
    4分 5分
     内 容: