none
SQL 2005 内存使用率异常 RRS feed

  • 问题

  • 我安装的服务器操作系统是windows server 2008,安装的sql2005。通过这几天的观察,从前几天内存使用率的%几到现在的%90几,内存使用率一直居高不下?请大师们指点
    2012年12月18日 1:41

答案

全部回复

  • 为了使运行在服务器上的应用程序都能达到比较满意的效果,同时也为了能给其他应用程序分配足够的内存,需要采取措施限制SQL Server 的内存使用量。

    参考:http://hi.baidu.com/itnote/item/eabba00d5d91556dd45a1114

    2012年12月18日 2:19
    版主
  • SQL Server内存一旦上去了就不会降下来的。所以往往需要配置下SQL缓存使用的最大最小内存量
    2012年12月18日 2:44
  • 之前LZ是不是发过帖子,使用“锁定内存页“ 的方法, 锁定内存页 只是阻止Windows把SQL的内存页面 换出内存,但是是不能解决内存使用率问题的

    建议LZ查看一下性能监视器看一下SQL使用内存的规律,还有当时是不是很多人访问SQL,查询大量数据,使SQL要缓存大量的结果集在内存中


    给我写信: QQ我:点击这里给我发消息

    2012年12月19日 12:13
  • sql server特点是内存有多少用多少,并且用了不释放。

    除非收到来自windows的内存压力flag,但是如果使用了lock page in memory并且没有限制buffer pool的上限...那可能就会出现你说的这种情况

    原理性的内容我写过一篇文章:http://www.cnblogs.com/CareySon/archive/2012/08/16/HowSQLServerManageMemory.html

    2012年12月20日 6:49
  • 宋大侠的文章写得非常好,对内存异常这类问题的判断很有帮助,有时候这些问题不是一两句话可以解释清楚的 赞一个

    给我写信: QQ我:点击这里给我发消息

    2012年12月20日 8:11
  • 宋大侠引用一下你的文章:

    但这又暴漏出了另一个问题,因为SQL Server锁定了内存页,当Windows内存告急时,SQL Server就不能对Windows的内存告急做出响应

    (当然了Buffer Pool中的非data cache和MemToLeave部分依然可以,但往往不够,因为这部分内存相比Data Cache消耗很小)

    需要在Perfmon.exe中查看SQL Server:Memory Manager\Total Server Memory计数器去找到SQL Server真实占用的内存


    给我写信: QQ我:点击这里给我发消息

    2012年12月20日 8:30