操作系统:Windows Server 2003 Standard X64 Edition
SQL 版本:Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) 
物理内存:16G如何设置才能让SQL使用更多的内存?
要不要开启AWE?
与32的SQL有没有关系?希望各位帮忙解答

解决方案 »

  1.   

    http://archive.cnblogs.com/a/1408304/
      

  2.   

    启用AWE有三步:
    1. 在boot.ini内增加/pae 允许Windows Server访问更多内存(最多16GB)
    2. 给SQL Server进程赋予“Lock Pages in Memory”
    3. 将配置中的“AWE Enabled”设置为1
      

  3.   

    在64位的系统中也需要开启AWE么?印象中看到有些人说不需要开启
      

  4.   

    64位系统,32位的SQL,这样搭配感觉很奇怪。内存16G,不晓得要不要设置最大使用内存
      

  5.   

    3、启动SQL SERVER AWE功能(*重启SQL SERVER服务 即可)
    在sql 查询分析器中输入
    use master
    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'awe enabled', 1
    RECONFIGURE
    GO
    sp_configure 'max server memory', 6144
    RECONFIGURE
    GO
      

  6.   

    ---SQL Server对大容量内存的支持
    32位操作系统有个很大的缺陷,应用程序无法访问大于4G的进程地址空间,因为32位的指针无法保存大于4G的地址空间
    如果大于4G,则需要使用地址窗口化扩展插件(AWE),具体操作如下:
    1,启动物理地址扩展
    (1)找到C:\boot.ini,并删除其只读属性.
    (2)编辑boot.ini,在ARC路径中添加/PAE参数.例如:
    在windows Server 2003 Enterprise Edition 中,编辑后的ARC路径如下:
    muti(0)disk(0)partition(1)windows="windows Server 2003 Enterprise,Edition"/fastdetect/PAE
    保存后将其恢复为只读模式,然后重新启动计算机。如果计算机上的可用物理内存超过16G,应确保boot.ini文件中没有/3gb参数
      

  7.   

    如果计算机上的可用物理内存超过16G,应确保boot.ini文件中没有/3gb参数---如何启动AWE选项
    sp_configure'show advanced options',1
    reconfigure
    go
    sp_configue 'awe enabled',1
    reconfigure
    go
    ---手动配置内存选项
    sp_configure'show advanced options',1
    go
    reconfigure
    go
    sp_configure 'min server memory' --服务器最小内存
    sp_configure 'max server memory' --服务器最大内存
    sp_configure 'index create memory'--创建索引占用的内存
    sp_configure 'min  memory per query'--每次查询占用的最小内存
      

  8.   

    64位的系统就不需要改boot.ini了吧,只需要启用SQL的AWE选项?
      

  9.   

    64 啥也不用设置吧。没试过搭配32位sql server 。确定没办法用大内存?
      

  10.   

    恩,最多只能占4G。现在启动了AWE,还是不行,是否需要设置MIN值?
      

  11.   

    64BITOS 不用设置
    看下这个sys.dm_os_memory_clerks
      

  12.   

    那为什么SQL使用内存无法超过4G呢
      

  13.   


    如果没记错,SQl Server自己会取内存来用。 而且取了从来不还,如果不重新启动服务的话,就会越占越大。
      

  14.   

    服务器就一个实例,也没有别的程序在用
    1.SQL Server进程赋予“Lock Pages in Memory”
    2.启动AWE,sql还是只占用3G左右
      

  15.   

    现在主要问题是,合并复制太慢了,就一张表,大概500W左右
    如果能提高sql占用的内存使用,合并复制会不会变快
      

  16.   

    select awe_allocated_kb  from sys.dm_os_memory_clerks 
    where [type]='MEMORYCLERK_SQLBUFFERPOOL'
      

  17.   

    64位的不用配置什么不过最好设置下最大sqlserver使用内存
    sp_configure 'max server memory (MB)','14000' --(留2g左右给系统)
    reconfigure with override
    go另外最好需要额外配置下 
    运行 gpedit.msc
    Lock pages in memory\Perform volume maintenance tasks 权限给sqlserver的启动帐号至于为什么,头一个没什么说的,应该很多人接触过,第2个参见http://blog.csdn.net/tjvictor/archive/2010/02/04/5287945.aspx
      

  18.   


    不配置的话只能占用3G,配置了AWE重启了SQL没用,然后刚给SQL启动账号赋予了Lock pages in memory的权限,但是还没重启,因为数据库现在在用,所以目前还是3G
      

  19.   


    你的操作系统是64位,你的sql server是32位?
    那么你需要:
    1.建立一个windows帐号,admin权限
    2.给该帐号锁定内存页权限
    3.设置sql server 占用最大内存为12GB
    4.重启sql server .
      

  20.   

    锁定内存页是必须的。另外如果是64位的sql+64位的windows,那么锁定内存页后,AWE会自动启用。
      

  21.   


    这样设置后select awe_allocated_kb from sys.dm_os_memory_clerks 
    where [type]='MEMORYCLERK_SQLBUFFERPOOL'
    有值了,不过select * from sysperfinfo where counter_name='Total Server Memory (KB)'                                                                                 的值很小,怎么看SQL现在占的内存?                     
      

  22.   

    做查询一直慢慢在加,应该OK了,谢谢 
    perfectaction,高手哈现在晚上解决合并复制慢的问题
      

  23.   

    Select sum(awe_allocated_kb)  as [AWE allocated, kb],
    sum(awe_allocated_kb)/1024/1024  as [AWE allocated, GB]
    From sys.dm_os_memory_clerksselect counter_name, ltrim(cntr_value*1.0/1024/1024)+'G' from master.sys.dm_os_performance_counters  
    where counter_name like '%target%server%memory%'or  counter_name like '%total%memory%'
      

  24.   

    按照perfectaction的解答,问题解决了。
    之前没成功原因应该是锁定内存页权限对应的账号是:NT AUTHORITY\NETWORK SERVICE,该用windows账号之后就可以了。