SQL Server占用内存的解决方法_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:解析 SQL Server 2008 的精妙之处
本文介绍了SQL Server 2008里的一些新的特点以及在试用过程中发现的一些精妙之处,大家一起来看看吧。 安装 SQL Server 2008的设置和安装也有所改进。配置数据和引擎位已经分开了,所以它使创建基本的未配置系统的磁盘图像变得可能了,它使分布到多个服务器

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

  首先,我们来看看MSSQL是怎样使用内存的。

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

  其次就是查询的开销,一般地说,hash join是会带来比较大的内存开销的,而merge join和nested loop的开销比较小,还有排序和中间表、游标也是会有比较大的开销的。

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

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

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

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

分享:SQL Server 2005 远程调试存储过程配置
问题: 您工作的本机装有Visual Studio 2005,局域网中有一台SQL Server 2005数据库服务器,你想通过本机远程调试SQL Server 2005服务器上的存储过程。但是不知道如何配置或启用远程调试?希望这篇文章对您有用。 对于数据库和Visual Studio在同一机器的存储

来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2012-06-12
相关Mssql数据库教程