sql server2000 使用内存始终不能超过2G

时间:2021-01-23 17:19:11

请教一个问题

有一台数据库服务器,无其它应用
8cpu
4G内存
windows server 2003 企业版
sql server 2000 企业版(已打sp4)

目前已做操作:
1.  boot.ini 已加/PAE参数
2.  页锁定:本地安全策略已加 system  administrator 
3.  已执行:

sp_configure 'show advanced options', 1 
RECONFIGURE 
GO 
sp_configure 'awe enabled', 1 
RECONFIGURE 
GO 
sp_configure 'max server memory', 4096 
RECONFIGURE 
GO 

但重启后,没有任何变化,从sql server错误日志可以看出:Address Windowing Extensions enabled.


现在,真是没有办法了,请老大及各位帮帮忙,哪位有实战经验,指点下..谢谢

12 个解决方案

#1


内存都是自动分配的吧

#2



可以自动分配,也可以固定
目前数据库压力比较大,但内存始终上不去2G. 说明数据不能更多的缓存在内存里.

#3




1)4GB 内存 os不需要开启PAE ,SQL Server 不需要开启 AWE
2)打开os的/3GB 根据实际情况可以设置min/max server memory 

#4


可以使用地址窗口扩展(AWE)
或者修改boot.int ,设置32位程序最大内存位3GB

#5


在2000下的设置,开了PAE参数,在SQL里安装了SP4和针对开了AWE的补丁,开了AWE,
    
  之所以没有占用过多的内存,是因为你的处理不需要那么多内存.   
    
  无论怎么设置,   SQL   Server均只是根据使用情况分配内存,   只有内存足够且有新需要时才自动分配新的内存.   
    
  如果内存,则释放内存到sql   server设置的最小内存.


我提老大回答你吧

#6


to shuiniu 
你的意思是说4G可能是个分界点?如果是8G,/PAE AWE才更有效?

今晚试试/3G,并关了AWE 试试

to utpcb 
如果像你说的这样,我就不提问了。。

to viva369 
我说的你没看吧

谢谢三位,继续征求解决方案。邹建大哥偶可是你的fans啊...

#7


引用 6 楼 perfectaction 的回复:
to shuiniu  
你的意思是说4G可能是个分界点?如果是8G,/PAE AWE才更有效? 


我上面的回复是针对你所提供的信息,所给出的建议。
可能是我回复的太简单了,导致你理解有误。

下面详细说一下:

1)/PAE 适用于32位os(x86),使其可寻址最大64GB的物理内存。当打开
/PAE时,实际上os加载了一个PAE版本的内核。但并不是说物理内
存小于4GB时开启该选项就没有用处,在某些场合还是有用处的。例如:
对于驱动程序开发人员,他就可以在小内存的Windows开启选项,来测试
驱动程序中对大地址的访问。所以当物理内存大于4GB时,要想用到
大于4GB的这部分内存,就必须打开/PAE开关。

2)AWE是Windows提供的一组分配内存的API,它使应用程序能够
访问的内存量超过通过标准32位寻址可使用的2或3GB内存。如果可用物理内
存小于用户模式虚拟地址空间的话,是无法激活AWE的就算你开启该选项。
AWE机制对于64位平台似乎是不必要的,因为但是64位平台上的应用程序完全可
以寻址很大的空间。但要记住一点是通过AWE API分配的内存是非分页内存,
也就是说是不会被os换出到系统的分页文件的。这也是64位平台使用AWE机制
的一个原因。

3)/3GB 当开启该开关时用户应用程序可以寻址3GB的进程地址空间,而
为操作系统保留1GB的进程地址空间。这也就意味着留给os的变少了,一些内
核的数据结构也会相应的缩小,对于1GB的内核寻址空间,os最多只能寻址16GB
的物理内存,当想使用超过16GB的物理内存时,就必须确保内核的2GB寻址能力,
也就是系统不能在/3GB模式下启动。

4)不同的sql server版本,不同的Windows版本。对所支持的内存容量和分配和
处理方式会有所不同。

5)SQL Server2005 在内存管理较2000已有比较大的变化,可以在msdn上找到相关
的资料。

#8


非常感谢shuiniu的回复
你说的这些我理解,微软的文档里也有解释
只不过我目前的情况符合微软文档里的硬件和软件配置,sql server 却无法超越2G内存,实在是没有办法了,

现在把/PAE 改成了 /3G
关了AWE

重启后,sql server 所占 内存还是直接就到2G,仍然无法超过。郁闷了。。

#9


有些东西就是很奇怪
最终解决了


windows2003 boot.ini 加/pae
sql server 2k 升级到 2005 ,开启awe ,设置'max server memory'
最后查看cache的缓存量
select *,cntr_value*1.0/(1024*1024) from master..sysperfinfo  where counter_name like '%total%memory%'
已达到理想值

很是奇怪,为什么2000不行?
更我所在的DBA群里,其它朋友也遇到过此类情况,有的朋友就是2000,却可以。

难到我的是盗版的不成?难道硬件有问题?

#10


还是人品有严重问题?

#11


mark

#12


在某些情况下,还要打上sp4之后的一个kb,这个才是真正解决办法,方便后人解决问题,今日补上。

#1


内存都是自动分配的吧

#2



可以自动分配,也可以固定
目前数据库压力比较大,但内存始终上不去2G. 说明数据不能更多的缓存在内存里.

#3




1)4GB 内存 os不需要开启PAE ,SQL Server 不需要开启 AWE
2)打开os的/3GB 根据实际情况可以设置min/max server memory 

#4


可以使用地址窗口扩展(AWE)
或者修改boot.int ,设置32位程序最大内存位3GB

#5


在2000下的设置,开了PAE参数,在SQL里安装了SP4和针对开了AWE的补丁,开了AWE,
    
  之所以没有占用过多的内存,是因为你的处理不需要那么多内存.   
    
  无论怎么设置,   SQL   Server均只是根据使用情况分配内存,   只有内存足够且有新需要时才自动分配新的内存.   
    
  如果内存,则释放内存到sql   server设置的最小内存.


我提老大回答你吧

#6


to shuiniu 
你的意思是说4G可能是个分界点?如果是8G,/PAE AWE才更有效?

今晚试试/3G,并关了AWE 试试

to utpcb 
如果像你说的这样,我就不提问了。。

to viva369 
我说的你没看吧

谢谢三位,继续征求解决方案。邹建大哥偶可是你的fans啊...

#7


引用 6 楼 perfectaction 的回复:
to shuiniu  
你的意思是说4G可能是个分界点?如果是8G,/PAE AWE才更有效? 


我上面的回复是针对你所提供的信息,所给出的建议。
可能是我回复的太简单了,导致你理解有误。

下面详细说一下:

1)/PAE 适用于32位os(x86),使其可寻址最大64GB的物理内存。当打开
/PAE时,实际上os加载了一个PAE版本的内核。但并不是说物理内
存小于4GB时开启该选项就没有用处,在某些场合还是有用处的。例如:
对于驱动程序开发人员,他就可以在小内存的Windows开启选项,来测试
驱动程序中对大地址的访问。所以当物理内存大于4GB时,要想用到
大于4GB的这部分内存,就必须打开/PAE开关。

2)AWE是Windows提供的一组分配内存的API,它使应用程序能够
访问的内存量超过通过标准32位寻址可使用的2或3GB内存。如果可用物理内
存小于用户模式虚拟地址空间的话,是无法激活AWE的就算你开启该选项。
AWE机制对于64位平台似乎是不必要的,因为但是64位平台上的应用程序完全可
以寻址很大的空间。但要记住一点是通过AWE API分配的内存是非分页内存,
也就是说是不会被os换出到系统的分页文件的。这也是64位平台使用AWE机制
的一个原因。

3)/3GB 当开启该开关时用户应用程序可以寻址3GB的进程地址空间,而
为操作系统保留1GB的进程地址空间。这也就意味着留给os的变少了,一些内
核的数据结构也会相应的缩小,对于1GB的内核寻址空间,os最多只能寻址16GB
的物理内存,当想使用超过16GB的物理内存时,就必须确保内核的2GB寻址能力,
也就是系统不能在/3GB模式下启动。

4)不同的sql server版本,不同的Windows版本。对所支持的内存容量和分配和
处理方式会有所不同。

5)SQL Server2005 在内存管理较2000已有比较大的变化,可以在msdn上找到相关
的资料。

#8


非常感谢shuiniu的回复
你说的这些我理解,微软的文档里也有解释
只不过我目前的情况符合微软文档里的硬件和软件配置,sql server 却无法超越2G内存,实在是没有办法了,

现在把/PAE 改成了 /3G
关了AWE

重启后,sql server 所占 内存还是直接就到2G,仍然无法超过。郁闷了。。

#9


有些东西就是很奇怪
最终解决了


windows2003 boot.ini 加/pae
sql server 2k 升级到 2005 ,开启awe ,设置'max server memory'
最后查看cache的缓存量
select *,cntr_value*1.0/(1024*1024) from master..sysperfinfo  where counter_name like '%total%memory%'
已达到理想值

很是奇怪,为什么2000不行?
更我所在的DBA群里,其它朋友也遇到过此类情况,有的朋友就是2000,却可以。

难到我的是盗版的不成?难道硬件有问题?

#10


还是人品有严重问题?

#11


mark

#12


在某些情况下,还要打上sp4之后的一个kb,这个才是真正解决办法,方便后人解决问题,今日补上。