none
SQLServer实际使用了多少内存? RRS feed

  • 问题

  • Windows 2003 X64

    我使用sp_configure 'max server memory'设置为5800M,而且使用性能计数器中的SQL Server Memory Manager:Total server memory 显示是5939200,换算成MB的话也是5800M。

    但是在任务管理器中显示使用了6401M。

    那么这里到底是使用了多少内存呢?

    因为如果按照任务管理器显示的6400的话,那么差不多所有任务加起来使用的内存再加上空闲内存和服务器实际内存一致。

    现在就 有点不明白了。。。。到底是使用了多少内存呢?


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年6月22日 8:18

答案

  •  max server memory是设定MS sql server使用的buffer pool的上限,而不是SQL server所有内存的使用上限.ms sql server除了使用buffer pool这些内存,还会使用别的内存,比如,linked server和扩展存储过程,使用的内存就不是在buffer pool中,而且,buffer pool都是8KB的页面,主要是用来幻存数据页面的,当然,也可以缓存size在8kb以内的执行计划.但是,超过8KB的内存需求,比如size大于8KB的执行计划,就不会被缓存在buffer pool里,而是放在叫memtoleave(64位系统叫貌似改叫Mutilpage了)的部分里.
    phil_he
    2011年6月23日 2:57
  • 默认情况下,SQL Server 根据操作系统报告的物理内存加载来动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止分页(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。像在与 SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server 每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配更改。

    具体内容参照http://support.microsoft.com/default.aspx?scid=kb;zh-cn;321363

    2011年6月23日 7:53

全部回复

  • Perfmon counter tells you how much memory sql can use, that matches your max memory setting. There are lot of other processes on the server, all of them consume memory.
    • 已建议为答案 Ai-hua Qiu 2011年6月23日 2:51
    2011年6月22日 13:20
  •  max server memory是设定MS sql server使用的buffer pool的上限,而不是SQL server所有内存的使用上限.ms sql server除了使用buffer pool这些内存,还会使用别的内存,比如,linked server和扩展存储过程,使用的内存就不是在buffer pool中,而且,buffer pool都是8KB的页面,主要是用来幻存数据页面的,当然,也可以缓存size在8kb以内的执行计划.但是,超过8KB的内存需求,比如size大于8KB的执行计划,就不会被缓存在buffer pool里,而是放在叫memtoleave(64位系统叫貌似改叫Mutilpage了)的部分里.
    phil_he
    2011年6月23日 2:57
  • 默认情况下,SQL Server 根据操作系统报告的物理内存加载来动态增大和收缩其缓冲池(缓存)的大小。只要有足够的内存可用于防止分页(在 4 至 10 MB 之间),SQL Server 缓冲池就会继续增大。像在与 SQL Server 分配内存位于相同计算机上的其他进程一样,SQL Server 缓冲区管理器将在需要的时候释放内存。SQL Server 每秒可以释放和获取几兆字节的内存,从而使它可以快速适应内存分配更改。

    具体内容参照http://support.microsoft.com/default.aspx?scid=kb;zh-cn;321363

    2011年6月23日 7:53