SQL Server数据库占用过多内存的解决方法

来源:asp之家 时间:2009-10-23 14:02:00 

经常有网友会问,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对内存的使用。

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

标签:SQLServer,数据库,内存
0
投稿

猜你喜欢

  • 在ASP中使用SQL语句之8:随机数的用法

    2007-08-11 13:15:00
  • 如何在一个广告旗帜里轮番显示时间长度不一的不同广告?

    2010-06-26 12:35:00
  • 特别推荐:Web开发常用速查手册大全(100+)

    2011-05-06 12:44:00
  • 界面设计10条可用性方面的启发

    2010-04-06 17:22:00
  • CSS模块化设计

    2009-01-05 12:10:00
  • 如何解决客户机页面刷新时连接不上数据库问题?

    2009-12-16 18:24:00
  • CSS Sprites

    2007-10-10 13:21:00
  • ie和firefox中css自动换行实现方法

    2008-04-08 12:49:00
  • expression为什么性能差?

    2009-05-28 19:12:00
  • 如何让Firefox2和Firefox3在Windows下共存并同时运行?

    2008-06-01 15:50:00
  • Dojo Style Javascript 编程规范

    2007-10-25 17:24:00
  • 创意方法杂谈

    2009-05-13 12:53:00
  • oracle下实现恢复一个丢失的数据文件的代码

    2009-03-02 11:02:00
  • SQL 外链接操作小结 inner join left join right join

    2008-03-12 11:56:00
  • MYSQL教程:服务器优化和硬件优化

    2009-02-27 15:43:00
  • 让大家看看Object标签的强大功能---多用途

    2009-02-21 10:18:00
  • Web2.0 体验式网站设计的41个关键点

    2008-08-10 17:49:00
  • js 仿Photoshop鼠标滚轮控制输入框取值(修正兼容Chrome)

    2010-02-05 12:27:00
  • css中浮动思考与小结

    2008-10-30 11:57:00
  • 富文本编辑器的基本原理与实践

    2008-06-13 13:28:00
  • asp之家 网络编程 m.aspxhome.com