注:如果计算机上的可用物理内存超过 16 GB,操作系统就需要 2 GB 的虚拟地址空间供系统使用,因此只能支持 2 GB 的用户模式虚拟地址空间。为了使操作系统能够使用超过 16 GB 的内存,应确保 Boot.ini 文件中没有 /3gb 参数。如果存在该参数,操作系统就不能使用超过 16 GB 的物理内存。
下面的示例说明了如何配置 AWE
1、SQL Server 2000,启用 AWE 并将 max server memory 配置为 12 GB:
--显示高级选项,默认某些隐藏选项无法查看和更改。
sp_configure 'show advanced options', 1
--更新系统存储过程更改的配置,使用当前已配置值。
RECONFIGURE
GO
--启用 AWE
sp_configure 'awe enabled', 1
RECONFIGURE
GO
--配置最大服务内存为 12G
sp_configure 'max server memory', 12288
RECONFIGURE
GO
2、SQL Server 2005,启用 AWE 并将 min server memory 配置为 4 GB,将 max server memory 配置为 12 GB:
启用 AWE:
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
重新启动 SQL Server 后,SQL Server 错误日志中应显示以下消息:
Address Windowing Extensions enabled
配置内存:
sp_configure 'min server memory', 4096
RECONFIGURE
GO
sp_configure 'max server memory', 12288
RECONFIGURE
GO
对上面的设置有以下几点说明:
(1)、SQL Server 2005启用 AWE 之后需要重启SQL Server服务,而2000没有要求重启。
(2)、SQL Server 2005支持动态分配 AWE 映射内存,内存设置使缓冲池动态管理 4 GB 到 12 GB 之间的 AWE 映射内存,而SQL Server 2000中不适用此动态 AWE 。
(3)、 min server memory 保证了 SQL Server 实例的缓冲池可用的最小内存量。SQL Server 不会在启动时立即分配 min server memory 指定的内存量。不过,除非降低 min server memory 的值,否则当内存使用量由于客户端负荷而达到该值后,SQL Server 不能从已分配的缓冲池中释放内存。
SQL Server 并不一定分配 min server memory 指定的内存量。如果服务器上的负荷从不需要分配 min server memory 指定的内存量,则 SQL Server 将以较少的内存运行。
(4)、 max server memory 避免了 SQL Server 缓冲池使用的内存量多于指定的内存量,这样剩余的可用内存可以用来快速启动其他应用程序。SQL Server 不会在启动时立即分配 max server memory 指定的内存量。内存使用量会随着 SQL Server 的需要增加,直到达到 max server memory 指定的值。除非提高 max server memory 的值,否则 SQL Server 不能超过此内存使用量。
(5)、SQL Server 2005需要在启用 AWE 之前锁定内存页,启用之后最大化网络应用程序数据吞吐量
(6)、锁定内存页
确定哪些帐户可以使用进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。在 SQL Server 2005 中,“锁定内存页”选项默认设置为 OFF,需要将此权限指定给正在运行 SQL Server 的帐户。
如何启用“锁定内存中的页”选项
1). 在“开始”菜单上,单击“运行”。在“打开”框中,键入 gpedit.msc。
将打开“组策略”对话框。
2). 在“组策略”控制台上,展开“计算机配置”,再展开“Windows 设置”。
3). 展开“安全设置”,再展开“本地策略”。
4). 选择“用户权利指派”文件夹。
细节窗格中随即显示出策略。
5). 在该窗格中,双击“锁定内存中的页”。
6). 在“本地安全策略设置”对话框中,单击“添加”按钮。
7). 在“选择用户或组”对话框中,添加有权运行 sqlservr.exe 的帐户。
(7)、最大化网络应用程序数据吞吐量
如果在“网络连接”中选中了“最大化文件共享的数据吞吐量”选项,则操作系统将在文件系统缓存中缓存应用程序的 I/O 页面,从而优先处理执行缓冲输入/输出 (I/O) 操作的应用程序。此选项可能会限制可用于 SQL Server 正常操作的内存。
检查当前操作系统的设置:
1). 在“控制面板”中,双击“网络连接”,再双击“本地连接”。
2). 在“常规”选项卡上,单击“属性”,选择“Microsoft 网络的文件和打印机共享”,再单击“属性”。
3). 选中“最大化网络应用程序数据吞吐量”,单击“确定”,再关闭其余对话框。
上面罗嗦了半天实际上就是对Windows系统如何支持 4 GB 以上的物理内存。这里参考了SQL Server 2005 联机丛书以及283037和274750两篇KB。