当前位置:  数据库>sqlserver

sql server占内存过多问题的解决方法

    来源: 互联网  发布时间:2014-08-29

    本文导语:  有时会遇到这样的情况: sql server占用了太多的内存,而且还不断的增长; 或者是这样的一种情况,虽然已经设置了使用内存,可是它没有用到那么多,原因何在? 首先,来看下sql server是怎样使用内存的。 最大的开销一般是...

有时会遇到这样的情况:
sql server占用了太多的内存,而且还不断的增长;
或者是这样的一种情况,虽然已经设置了使用内存,可是它没有用到那么多,原因何在?

首先,来看下sql server是怎样使用内存的。
最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得会用到的数据统统扔到内存中,直到内存不足时,才会把命中率低的数据给清掉。
因此,当我们在看statistics io时,看到的physics read都是0。

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

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

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

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

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

读到这里,你是不是已经清楚很多了,对于sql server内存占用过多的原因有了更多的认识,那么就在平时多加注意吧。
合理分配与使用sql server的内存,避免过多占用,造成性能上的不足。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • (X86/X64)安装sql server 2005 过程中提示“无法启动sql server的 启动”的解决方法
  • sql无效字符引起的执行sql语句报错的解决方法
  • 安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法
  • sql server 代理(已禁用代理xp)的解决方法
  • 解决:未与信任SQL Server连接相关联的问题
  • sql无效字符 执行sql语句报错解决方案
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
  • Sql Server忘记密码的解决办法
  • SQL Server代理服务无法启动的解决方法
  • Oracle Sql语句长度限制问题及解决
  • sql 单引号查询异常的解决方法
  • sql server表死锁查不出数据的解决方法
  • Sql2000与Sql2005共存安装的解决方法
  • Microsoft SQL Server 2005 错误 29503 的解决方法
  • sa用户无法登录sql server 2005的解决方法
  • SQL Server 2005 还原数据库错误解决方法
  • sql server 复制路径出问题的解决方法
  • sql server2012附加数据库问题解决方法
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3