标准的 32 位地址最多可映像 4 GB 内存。因此,32 位进程的标准地址空间限制为 4 GB。默认情况下,在 32 位 Microsoft Windows 操作系统中,将为操作系统保留 2 GB 空间,另外 2 GB 空间可由应用程序使用。
在32bit操作系统中,一般sql Server可以使用的内存不到2G,就算开启了3GB开关,也使用不到3G。现在,内存容量超过4GB的服务器越来越多,如果要sql SERVER2000可以使用大容量的内存,我们需要做以下设定。
备注:
如何开启操作系统3G开关
修改boot.ini文件(要在C盘下看到boot.ini需要在勾掉“隐藏受保护的操作系统文件”),在启动windows项中添加 /3G 参数。修改过后的boot.ini文件应该类似以下内容:
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
多了一个 /3G 参数。这个参数的作用,就是让windows启动时,将自己的内核及支持程序装载到内存地址 0xC0000000 到 0xFFFFFFFF 之间,给应用程序留出3G的空间来。
设置sql Server使用大容量内存步骤:
1. 安装sql Server2000,升级至SP4 (8.00.2039),并打上AWE补丁sql2000-KB899761-v8.00.2040
2. 在 C:\boot.ini 档中设定 /PAE 参数,然后重开机,让OS抓到内存
备注: PAE(物理地址扩展)
例子:multi(0)disk(0)rdisk(0)partition(1)="Microsoft Windows 2000 Advanced Server" /fastdetect /PAE
3. 在sql Query Analyzer中输入下列指令,来启动sql Server的AWE功能(这里设定内存为6G):
RECONFIGURE
GO
sp_configure 'awe enabled',1
RECONFIGURE
GO
sp_configure 'max server memory',6000
RECONFIGURE
GO
sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
GO
4. 在控制面板--管理工具--本地安全策略(或域安全策略中)--安全设置--本机策略—用户权限分配右边窗口中选取“内存中锁定页面”,在其设定画面新增用户或组,加入MSsqlSERVER服务的启动账号(比如administrator)。
5. 在命令提示符号下输入
secedit /refreshpolicy machine_policy /enforce (针对windows2000)
Windows 2000 接受此请求后,会向用户显示以下文本:
来自域的组策略传播已为这台计算机触发。要完成传播并使新策略生效,需要几分钟的时间。请检查应用程序日志。
Windows 2003 下执行 gpupdate 后的结果。
C:\>gpupdate
正在刷新策略...
用户策略刷新完成。
计算机策略刷新完成。
要检查在策略处理中的错误,请查阅事件日志。
6. 重新启动sql Server服务使设定生效
7. 在sql Query Analyzer中输入下列指令,来关闭sql Server的allow updates功能:
RECONFIGURE WITH OVERRIDE
GO
8. 开启任务管理器看看内存是否跟设定值一样
术语解释:
PAE(Physical Address Extension):PAE 是 IA32 处理器新增的功能,可以寻址 4 GB 以上的物理内存。Microsoft Windows 2000 Advanced Server、Microsoft Windows 2000 Datacenter Server、Microsoft Windows Server 2003,企业版和 Microsoft Windows Server 2003,Datacenter Edition 可以使用 PAE 寻址超过 4 GB 的物理内存。如果要启用 PAE,请使用 Boot.ini 档案中的 /PAE 参数。
AWE(Address Windowing Extensions):AWE 是一个 API 集,它使程序能够保留大内存块。保留的内存是非分页的,并且只可以由该程序来使用。