最近做了一个网站qq.115sou.com,在服务器中SQL Server占用内存非常高,加内存后,SQL Server又吃掉新加的内存,好像内存永远不够用一样,怎么办?

  其实这并不一定是由于SQL Server活动过度造成的,在启动SQL Server后,SQL Server内存使用量会持续稳定上升,即使服务器上活动很少也不会下降,直到物理内存仅剩下4到10M为止,这是SQL Server缓冲池的预期行为,正常现象。

  不过这种现象使得服务器应付峰值的能力降低,当突然有较大的活动时,可能使得服务器当机。要限制缓冲池的内存使用量,可以打开“SQL Server属性”->“内存”,在这一页中降低“最大值”,点击“确定”。点击“运行值”,可以发现“最大值”没有变化,说明刚才的设置并没有生效,实际上该设置更改后要重新启动SQL Server才能生效,重新启动SQL Server。

  这里的内存,并不是指SQL Server整个占用的内存,而是指SQL Server缓冲池所用的内存,所以SQL Server实际所占内存要大于此值。

SqlServer2005内存分配

默认情况下Sqlserver2005的内存会根据可用资源的情况动态的变化.Min server Memory的默认值为0,Max server memory的默认值为2147483647,可以为Max server memory的值指定为最小内在为16MB.

但是如果把Max server memory的值设置为最小降底Sqlserver2005的性能,甚至无法启动.如果出现无法启动的时候可以使用-f startup选项进行启动,并将Max server memory设置成以前的值..

当Sqlserver动态使用内存时,他会定期查询系统以确定可用物理内存量,在Server2000中,Sql会根据服务器的活动来增大或收缩缓冲区调整缓存,以使可用物理内存保持在4MB和10Mb之间.保持此可用内存可避免Win server2000分页.如果内存过少则Server2000会释放内存给WinServer2000,如果内存过多Sql2000将分配内存给缓冲池.Sql仅在工作负荷需要时才增加内存给缓冲池.处于休眠状态的服务器不会增加其缓冲池的内存.

手动设置Sql内存的方法:

一:将Min server memory和Man server memory设置成同一值,此值与达到该值后分配给缓冲池的固定内存相对应.

二:将Min server memory和Man server Memory设置成一个范围内,这种方法系统或数据管理员希望配置Sql实例,同时又要考虑同一台机器上运行其它应用程序的内存需求很有用.

Min server memory保证了Sqlserver实例的缓冲池可用的最小内存量,Sql server不会在启动时立即分配Min server memory指定的内存量,不过除非降低Min server memory的值,否则内存使用量由于客户端使用达到该值后,Sql server不能分已经分配的缓冲池中释放内存.

Sql server 并不一定分配指定的Min server memory,如果Sql server的负荷不需要分配Min server memory指定的内存,Sql server将以较小的内存运行....

max server memory 避免了 SQL Server 缓冲池使用的内存量多于指定的内存量,这样剩余的可用内存可以用来快速启动其他应用程序。SQL Server 不会在启动时立即分配 max server memory 指定的内存量。内存使用量会随着 SQL Server 的需要增加,直到达到 max server memory 指定的值。除非提高 max server memory 的值,否则 SQL Server 不能超过此内存使用量。

在减小 max server memory 值之前,可以使用性能监视器来检查 SQLServer:Buffer Manager 性能对象,并注意 Stolen pages 和 Reserved pages 计数器的当前值。这些计数器将内存报告为 8K 页的数目。应将 max server memory 设置为大于这两个值的和,以免出现内存不足错误。对于合理的最低 max server memory 设置 (MB),近似值为 ([Stolen pages] + [Reserved pages])/ 100。若要减小 max server memory,可能需要重新启动 SQL Server 以释放内存。

sql server2005内存过高释放方法的更多相关文章

  1. SQL Server内存数据写入磁盘方法比较

    众所周知,SQLServer增删改数据最先都是在内存中进行的,这可以大大加快数据操作的速度: 当内存中的数据被修改了,而磁盘中的数据还没有被修改时,就产生了所谓的“脏页”,SQLServer是如何同步 ...

  2. w3wp.exe进程占用内存过高解决方法

    解决CPU占用过多: 1.在IIS中对每个网站进行单独的应用程序池配置.即互相之间不影响. 2.设置应用程序池的CPU监视,不超过25%(服务器为4CPU),每分钟刷新,超过限制时关闭. 根据w3wp ...

  3. 用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)

    原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为 ...

  4. Sql server2005 优化查询速度50个方法小结

    Sql server2005 优化查询速度50个方法小结   Sql server2005优化查询速度51法查询速度慢的原因很多,常见如下几种,大家可以参考下.   I/O吞吐量小,形成了瓶颈效应.  ...

  5. SQL Server占用服务器内存过高

    SQL Server对服务器内存的使用策略是用多少内存就占用多少内存,只用在服务器内存不足时,才会释放一点占用的内存,所以SQL Server 服务器内存往往会占用很高. 查看内存状态: DBCC M ...

  6. SQL Server2005索引碎片分析和解决方法

    SQL Server2005索引碎片分析和解决方法 本文作者(郑贤娴),请您在阅读本文时尊重作者版权. 摘要: SQL Server,为了反应数据的更新,需要维护表上的索引,因而这些索引会形成碎片.根 ...

  7. linux服务器内存占用太高-释放内存

    修改/proc/sys/vm/drop_caches,释放Slab占用的cache内存空间(参考drop_caches的官方文档): Writing to this will cause the ke ...

  8. 编写高质量代码改善C#程序的157个建议——建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理

    建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理 在标准的Dispose模式中,我们注意到一个以~开头的方法,如下: /// <summary> /// 必须,防止程序员忘记 ...

  9. Windows xp下安装sql server2005所碰到的一些问题及解决方法

    之前提到的帮老板做的一个中船重工的项目,其中的一个子模块:windows下获取特定进程网络流量 一开始是用VS2010做的,后来老板把项目书拿给我看后,明确要求开发环境为VS2005和Sql serv ...

随机推荐

  1. 2432: [Noi2011]兔农 - BZOJ

    Description 农夫栋栋近年收入不景气,正在他发愁如何能多赚点钱时,他听到隔壁的小朋友在讨论兔子繁殖的问题. 问题是这样的:第一个月初有一对刚出生的小兔子,经过两个月长大后,这对兔子从第三个月 ...

  2. 【BZOJ】【1770】【Usaco2009 Nov】lights 灯

    高斯消元解XOR方程组 一眼看上去是高斯消元解xor方程组……但是不会写……sad 去膜拜了Hzwer和ZYF Hzwer啥也没说,还是zyf靠谱…… 当多解的时候就需要爆搜枚举自由元的情况,找最优解 ...

  3. 【CodeForces】【#286】Div.2

    T_T越来越水了,这次只做出A+B. A题为了代码简单直接枚举(插入位置和插入字符) //CF #286 Div.2 A #include<vector> #include<stri ...

  4. C++ 面试题整理

    我和朋友们面到的c++试题整理 虚表 static const sizeof 可构造不可继承的类 stl Iterator失效 map vector vector的removed_if 优化 ---- ...

  5. TCP 滑动窗口和 拥塞窗口

    转http://coolshell.cn/articles/11609.html 滑动窗口 -- 表征发送端和接收端的接收能力 拥塞窗口-- 表征中间设备的传输能力 TCP滑动窗口 需要说明一下,如果 ...

  6. spoj 1108

    要求输出一个牌的顺序 使每隔1.2.......n翻牌后出现1 2 3 4 5 6 7 8 9 .... n 将牌想象成n个空格  正向推 空n个位置放n 循环 需优化 #include <io ...

  7. oracle 用户 多个表空间

    首先,授权给指定用户. 一个用户的默认表空间只能有一个,但是你可以试下用下面的语句为其授权在别的表空间中创建对像: alter user  username quota 0||unlimited on ...

  8. CentOS 6.4 搭建SVN服务器

    SVN作为新一代代码版本管理工具,有很多优点,管理方便,逻辑明确,安全性高,代码一致性高.SVN数据存储有两种方式,BDB(事务安全表类型)和FSFS(一种不需要数据库的存储系统),为了避免在服务器连 ...

  9. 深入浅出ES6(七):箭头函数 Arrow Functions

    作者 Jason Orendorff  github主页  https://github.com/jorendorff 箭头符号在JavaScript诞生时就已经存在,当初第一个JavaScript教 ...

  10. Unity UGUI —— 鼠标穿透UI问题(Unity官方的解决方法)

    解决方案 : http://www.cnblogs.com/fly-100/p/4570366.html 这里我们直接在使用Input.GetMouseButtonDown(0)的地方加了一个检测函数 ...