日期:2014-05-17  浏览次数:20398 次

也问一个SQL Server 2005内存相关问题
环境:Microsoft SQL Server 2005 - 9.00.4035.00 (X64)   Nov 24 2008 16:17:31   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7600: ) 

最近发现,32G的内存,大部分情况下都是占用31.7G左右,原来好像一直在20G左右。
这个啥情况?
与此同时,数据库的性能貌似没啥变化。


SQL Server 2005的默认配置没有动过,主要是不懂。
就这个情况,请指点。

SQL?Server?2005 内存

------解决方案--------------------
关系型数据库甚至其他数据库都吃内存,正常现象
------解决方案--------------------

应该是正常,sqlserver2005默认内存设置是无限大,只用那麼多的话证明那些足够它内部数据转换的了。 

手动设置 SQL Server 内存选项有两种主要方法:

第一种方法,将 min server memory 和 max server memory 设置为同一值。此值与达到该值后分配给 SQL Server 缓冲池的固定内存量相对应。

第二种方法,将 min server memory 和 max server memory 设置成一个内存范围。这种方法在系统或数据库管理员希望配置 SQL Server 实例,同时又要考虑在同一台计算机上运行的其他应用程序的内存需求时很有用。
min server memory 保证了 SQL Server 实例的缓冲池可用的最小内存量。SQL Server 不会在启动时立即分配 min server memory 指定的内存量。不过,除非降低 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 不能超过此内存使用量。

------解决方案--------------------
主要内存用于:
1、缓存所需数据,sqlserver不直接操作磁盘上的数据,需要用时会从磁盘加载到内存,这部分是内存最大的消耗者,而且除非内存有压力,不然一般数据会驻留内存相当长的时间,除非重启或者用DBCC命令清除。
2、缓存执行计划,减少编译时间,降低CPU压力。提高重用机会
看sqlserver的内存不能仅看用了多少,还要借助某些计数器或者其他技术来识别是否有内存压力,可以看看我的文章:http://blog.csdn.net/dba_huangzj/article/details/8627000
------解决方案--------------------
内存这东西几本书都讲不完,大概就那样,不要过多在意用了多少,而是检查是否有压力。当然用的多还是要监控
------解决方案--------------------
有新的查询就会产生新的内存需求,变大是正常的
------解决方案--------------------
如果你现在内存没有压力,那就没必要加,sqlserver和windows还不至于不会调整内存使用。对于数据库,优化代码和设计往往才是根本,加资源还是要先考虑是否已经到达最大吞吐量。我的文章有介绍一些计数器,可以去监控一下是否到达建议的阈值

------解决方案--------------------
看SQL2005版本号,SQL2005 SP4补丁尚未安装喔,请安装一下..

SQL2005 SP4的版本号应该是 Microsoft SQL Server 2005 - 9.00.5069.00

------解决方案--------------------
引用:
环境:Microsoft SQL Server 2005 - 9.00.4035.00 (X64)   Nov 24 2008 16:17:31   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7600: ) 

最近发现,32G的内存,大部分情况下都是占用31.7G左右,原来好像一直在20G左右。
这个啥情况?
与此同时,数据库的性能貌似没啥