SQL Server占用内存的解决方法

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

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

时间: 2024-11-02 02:04:44

SQL Server占用内存的解决方法的相关文章

常见SQL Server连接错误及解决方法

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   一.SQL Server不存在或访问被拒绝 分析:此问题最为复杂,由于错误发生的原因比较多,所以需要检查很多方面. 一般情况下,有几种可能性: 1.SQL Server名称或IP地址拼写有误. 2.服务器端网络配置有误. 3.客户端网络配置有误. 要解决此问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接 ping <服务器

SQL2000安装后,SQL Server组无项目解决方法_MsSql

昨天装了个SQL2000,打开企业管理器,发现SQL Server组下面没有任何的内容,提示"无项目".之前sa设置的都是空密码就没碰到这个现象,这次sa用户设置了密码就出现这个情况! 解决方法 打开企业管理器,如下图,在"SQL Server组"上右击,选"新建SQL Server注册",用向导选择一个服务器,一般都是本地,在上面默认的有,双击一下添加右边的框里就行了,选择验证方式,一般都是用电脑系统账号验证,因为站长是在本地使用的,完成注册,

sql server 无法正常启动解决方法

通过使用 SEM,右键单击服务器,单击属性,然后单击安全选项卡.在启动服务帐户下面,输入相应的帐户和密码. 安装SQL Server2000时是使用默认登录用户来作为启动SQL Server服务的账号(对于自己使用的单机,通常就是administrator了),但是我更改了用户名出现"同于登录失败而无法启动服务"的错误 以下我试过的方法. 1,把用户口令改回原来的,再启动服务 2,使用控制面版服务管理器,找到MSSQLSERVER服务,更改启动账号信息,改成变更后的,再启动服务 3,也

SQL2000安装后,SQL Server组无项目解决方法

昨天装了个SQL2000,打开企业管理器,发现SQL Server组下面没有任何的内容,提示"无项目".之前sa设置的都是空密码就没碰到这个现象,这次sa用户设置了密码就出现这个情况! 解决方法 打开企业管理器,如下图,在"SQL Server组"上右击,选"新建SQL Server注册",用向导选择一个服务器,一般都是本地,在上面默认的有,双击一下添加右边的框里就行了,选择验证方式,一般都是用电脑系统账号验证,因为站长是在本地使用的,完成注册,

安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法_MsSql

安装sql server 2008 management,提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 SQL Server 2005 Express 工具.若要继续,请删除 SQL Server 2005 Express 工具.sql server 2005 management和sql server 2008 management不是兼容吗?为什么会有这样的提示? 答案是SQL Server 2

安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法

安装sql server 2008 management,提示错误:Sql2005SsmsExpressFacet 检查是否安装了 SQL Server 2005 Express 工具. 失败,已安装 SQL Server 2005 Express 工具.若要继续,请删除 SQL Server 2005 Express 工具.sql server 2005 management和sql server 2008 management不是兼容吗?为什么会有这样的提示? 答案是SQL Server 2

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

经常有网友会问,SQL Server占用了太多的内存,而且还会不断的增长:或者说已经设置了使用内存,可它没有用到那么多,这是怎么一回事儿呢?下面,我们来具体看以看SQL Server是怎样使用内存的. 最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉.所以一般我们在看statistics io的时候,看到的physics read都是0. 其次就是查询的开销,一般地说,hash join是会带来比较大的内

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

QL Server数据库占用过多内存的解决方法 经常有网友会问,SQL Server占用了太多的内存,而且还会不断的增长:或者说已经设置了使用内存,可它没有用到那么多,这是怎么一回事儿呢? 下面,我们来具体看以看SQL Server是怎样使用内存的. 最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉.所以一般我们在看statistics io的时候,看到的physics read都是0. 其次就是查询的开

优化SQL Server的内存占用之执行缓存

在论坛上常见有朋友抱怨,说SQL Server太吃内存了.这里笔者根据经验简单介绍一下内存相关的调优知识.首先说明一下SQL Server内存占用由哪几部分组成.SQL Server占用的内存主要由三部分组成:数据缓存(Data Buffer).执行缓存(Procedure Cache).以及SQL Server引擎程序.SQL Server引擎程序所占用缓存一般相对变化不大,则我们进行内存调优的主要着眼点在数据缓存和执行缓存的控制上.本文主要介绍一下执行缓存的调优.数据缓存的调优将在另外的文章