服务器环境:
1、inter xeon cpu e5-2404 8gb内存
2、microsoft windows server 2003 r2 enterprise edition sp2  (32位3操作系统)
3、sqlserver2005 sp4 (32位)
=======1、c盘boot.ini文件添加了pae参数
2、安全策略中也添加了administrator
3、sqlserver中开启了awe,最大内存设置为6144.
已经重启服务器。可以使用一段时间,总内存一直维持在1.95g,不知问题出在哪里?数据库不是很吃内存的吗?
SQL Server内存

解决方案 »

  1.   

    1、是只开着还是一直都有人用?如果只开着不干什么,内存不会增的比较明显。
    2、开了AWE就没必要开PAE了。
      

  2.   

    开启最大最小都为6144
    然后用ostress 设置几百个进程,同时执行TB级别大量读写!
    不信搞不爆它!
      

  3.   

    Hi ,
    开启PAE是AWE起作用的必要条件,AWE就是使用PAE机制来读取超过4G的地址空间的。
      

  4.   

    “总内存一直维持在1.95g” 是怎么看出来了,任务管理器?使用AWE分配的内存在任务管理器里是不显示的。
      

  5.   

    Hi ,
    开启PAE是AWE起作用的必要条件,AWE就是使用PAE机制来读取超过4G的地址空间的。OK,看错了,应该是没必要再开启/3GB
      

  6.   

    Hi ,
    开启PAE是AWE起作用的必要条件,AWE就是使用PAE机制来读取超过4G的地址空间的。OK,看错了,应该是没必要再开启/3GB
    一般来说,如果超过16G,不推荐使用/3G
    http://blogs.technet.com/b/rob/archive/2008/05/15/windows-memory-and-sql-server.aspx
      

  7.   

    Hi ,
    开启PAE是AWE起作用的必要条件,AWE就是使用PAE机制来读取超过4G的地址空间的。OK,看错了,应该是没必要再开启/3GB
    一般来说,如果超过16G,不推荐使用/3G
    http://blogs.technet.com/b/rob/archive/2008/05/15/windows-memory-and-sql-server.aspxthanks
      

  8.   

    32位系统中,SQLSERVER会有384MB的ReserverdMemory空间预留,此外在任务管理器中一般只能看到1.6G的内存使用,多余部分全部是数据缓存,任务管理器是无法看到,你需要使用动态管理视图去查看。
    打开AWE,为SQLSERVER分配6GB的空间,剩余2GB给系统和其他进程使用。
    千万不要开PAE,如果开了PAE,系统内存的虚拟寻址空间会变小,当未分页空间小于一定大小时,你的服务器系统可能会崩溃,如果一定要开PAE,你必须监控服务器,寻求一个平衡点。
      

  9.   

    这个我上面说了,不开启PAE,如何使用AWE读写那些超过4G的内存?
      

  10.   

    看看是不是这个问题。为什么SQL Server使用很少的内存? 
      

  11.   


    回复:任务管理器中看的总内存。
    每日独立ip 至少1k,pv几十万,多个数据库,每个5g以上。
      

  12.   


    回复:任务管理器中看的总内存。
    每日独立ip 至少1k,pv几十万,多个数据库,每个5g以上。
    任务管理器看到的不准,上面的博客提到了。AWE APIs锁定内存页和普通内存页不同,所以在任务管理器看不到这部分。你看一下你现在可用内存然后在比较一下你的真实内存就发现SQL SERVER可能用了不止那么点。
      

  13.   


    回复:任务管理器中看的总内存。
    每日独立ip 至少1k,pv几十万,多个数据库,每个5g以上。
    任务管理器看到的不准,上面的博客提到了。AWE APIs锁定内存页和普通内存页不同,所以在任务管理器看不到这部分。你看一下你现在可用内存然后在比较一下你的真实内存就发现SQL SERVER可能用了不止那么点。
    嗯,physical_memory_in_use_kb 比较准确,不过它不包括paging掉的内存。
      

  14.   


    回复:任务管理器中看的总内存。
    每日独立ip 至少1k,pv几十万,多个数据库,每个5g以上。
    任务管理器看到的不准,上面的博客提到了。AWE APIs锁定内存页和普通内存页不同,所以在任务管理器看不到这部分。你看一下你现在可用内存然后在比较一下你的真实内存就发现SQL SERVER可能用了不止那么点。
    嗯,physical_memory_in_use_kb 比较准确,不过它不包括paging掉的内存。
    是的
      

  15.   

    看出来了大家都对性能这一块感兴趣!哦也跑来凑凑热闹。不是pae和AWE不能一起开,是 3GB和PAE最好不要一起开。开启AWE的作用大概有两点,第二点是锁定内存页。这也算是64位系统也需要开Awe的一个理由吧。就是window需要内存的时候不会大量裁剪SQL内存。 lock pages in memory 有仨条件吧! 
    1. 数据库启动帐号在系统的Administrators组里。
    2. 开启了AWE
    3. 设置了Lock pages in memory启动帐号要和服务的启动帐号一样。it's here,don's forget to do this!
      

  16.   

    64 bit does not need Awe
      

  17.   


    除了以上这些,你还需要
    1.为sql server service提供单独的windows帐号来启动它
    2.确认对1中的win帐号设置了锁定内存页权限
     
      

  18.   

    另外可以通过下面的SQL来查一下内存分配情况:
    SELECT counter_name,cntr_value*1.0/1024/1024 as Memory_GB
    FROM sys.dm_os_performance_counters
    WHERE ([OBJECT_NAME] like '%Memory Manager%') and
    counter_name in( 'Target Server Memory (KB)','Total Server Memory (KB)')SELECT SUM(awe_allocated_kb)*1.0/1024/1024 as total_awe_allocated_GB FROM sys.dm_os_memory_clerks 
      

  19.   

    总结:
    1、windows boot.ini文件 添加/pae
    2、本地策略中,锁定内存页中增加账号
    3、本地连接--网络的文件和打印机属性--选择最大化网络应用
    4、sqlserver中执行脚本修改min、max内存值,单位是mb感谢楼上各位参与,马上结贴。