在 Microsoft SQL Server 中,利用地址窗口化扩展插件 (AWE) API,可以使可访问的物理内存量超出对配置的虚拟内存设置的限制。可使用的具体内存量取决于硬件配置和操作系统的支持能力。Microsoft Windows Server 2003 操作系统所支持的物理内存量有所增加。因此,AWE 可访问的物理内存量取决于使用的操作系统。
启用 AWE 之前,请注意下列特定于操作系统的准则:
对于 Windows 2000 和 Windows Server 2003,无法将 AWE 内存换出到页面文件。因此,您应该通过确定在该计算机上使用的所有其他应用程序都启动后有多少内存可供使用,来确定为 SQL Server 实例分配多少内存才是妥当的。
使用系统监视器中的 SQL Server Total Server Memory (KB) 计数器可以确定在 AWE 模式下运行的 SQL Server 实例分配的内存量。配置 max server memory 选项可另外留出一些可用内存,以满足其他应用程序、Windows 2000 和 Windows Server 2003 的需要。有关详细信息,请参阅监视内存使用量。
若要启用 AWE,请将 awe enabled 设置为 1。对于 Windows 2000,如果没有为 max server memory 指定值,SQL Server 会在启动过程中保留几乎所有的可用内存,只为其他应用程序留下 128 MB 或更少的物理内存。(如果未启用 AWE,为其他应用程序保留的物理内存量可由最大服务器内存控制。)对于 Windows Server 2003,由于 AWE 映射内存管理是动态的,因此在启动过程中,只分配总可用物理内存的一小部分。
如果已成功启用此选项,当 SQL Server 实例启动时,SQL Server 错误日志中将写入消息“Address Windowing Extensions enabled”。
awe enabled 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 awe enabled。必须重新启动 SQL Server 实例,AWE 才会生效。
下面的示例说明如何启用 AWE 以及如何将 min server memory 配置为 1 GB,将 max server memory 配置为 6 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。
Address Windowing Extensions enabled
然后,配置内存:
sp_configure 'min server memory', 1024 RECONFIGURE GO sp_configure 'max server memory', 6144 RECONFIGURE GO
在上面针对 SQL Server 和 Windows Server 2003 的示例中,内存设置指示缓冲池动态管理 1 GB 和 6 GB 之间的 AWE 映射内存。(此动态 AWE 示例不适用于 SQL Server 2000。)如果其他应用程序需要额外的内存,SQL Server 会在不需要 AWE 映射内存时释放所分配的 AWE 映射内存。在此示例中,最多只能释放 1 GB(即最小服务器内存限制)的 AWE 映射内存。
请注意,将 min server memory 选项设置为 1 GB 不会自动强制 SQL Server 获取 1 GB 的内存。将基于当前数据库服务器负荷按需分配内存。
若要禁用 AWE,请将 awe enabled 设置为 0,并执行 RECONFIGURE 语句。默认情况下,AWE 内存是禁用的。SQL Server 错误日志记录 awe enabled 选项的变化。重新启动后,SQL Server 将在标准动态内存分配模式下运行,其可用内存受虚拟地址空间或物理内存的限制,以较小的值为准。