一、内存体系结构

1. 32位操作系统与PAE

  在 32 位操作系统中,可以访问 4 GB 的虚拟地址空间。2 GB 的虚拟内存专用于进程,由应用程序使用;2 GB 保留给操作系统使用。

  在 Boot.ini 文件中使用 /PAE 开关,启用PAE(物理地址扩展)才能利用超过 4 GB 的内存。最多可以访问到64GB物理内存。


2. AWE

  SQL Server 支持地址窗口化扩展插件 (AWE),从而允许在 32 位版本的 Microsoft Windows 操作系统上使用超过 4 GB 的物理内存。最多可支持 64 GB 的物理内存。Windows Server 2003 及后续的操作系统中,SQL Server 实例使用动态 AWE 内存分配。

  启动过程中,SQL Server 仅保留一小部分 AWE 映射内存。需要额外的 AWE 映射内存时,操作系统会动态地将其分配给 SQL Server。同样,如果需要更少的资源,SQL Server 会将 AWE 映射内存返还给操作系统,以供其他进程或应用程序使用。SQL Server 和操作系统之间的这种平衡受到 min server memory 和 max server memory 参数的限制。


3. 锁定内存页

  必须在启用 AWE 之前为 SQL Server 启动帐户授予 LOCK PAGE IN MEMORY 权限。

172920766.png

  默认情况下,禁用 Windows 策略“锁定内存页”(Lock pages in memory)选项。必须启用此权限才能配置地址窗口化扩展插件 (AWE)。此策略将确定哪些帐户可以使用进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。在 32 位操作系统中,如果在不使用 AWE 的情况下设置此权限会显著降低系统性能。在 64 位操作系统上不需要在内存中锁定页。http://technet.microsoft.com/zh-cn/library/ms190730(v=sql.105).aspx


4. SQL Server使用AWE内存的局限

  应用程序申请内存有两种方式,一种是Reservrd/Committed,另一种是stolen。AWE内存只适用于前者,使用的过程如下:

(1)Reserved

  应用程序调用Windows API,申请保留(Reserve)一块内存空间,以供将来使用。此时只是保留一段虚拟地址空间(VAS)上面的一段地址,尚未分配真正的物理内存空间。

(2)Committed

  将预先保留的内存页面正式提交(Commit)给应用程序使用。此时正式在物理内存中申请了一段有效空间。


  Reservrd/Committed技术为需要潜在的、大量的和连续的内存缓冲区的应用程序非常有用。SQL Server内存需求中仅有data cache 以这种方式申请内存。

  也就是说,除了data cache可以使用4GB以上的AWE内存,SQL Server 中以stolen方式申请的其它内存都不能使用4GB以上的内存部分(仍局限于4GB以内)。因此,借助AWE将内存扩充到64GB类似于一种虚拟技术,它与64位操作系统的64GB内存不可同日而语。



二、启用AWE

1. SSMS

174734148.png


2.SP_Configure

sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO


3. 生效

  必须重新启动 SQL Server 实例,AWE 才会生效。

  当 SQL Server 实例启动时,如果已成功启用此选项,启动日志errorlog会有以下记录。

server Address Windowing Extensions enabled.


二、局限性

1. 操作系统限制

  64 位操作系统上不需要 AWE,也不能在该系统上配置 AWE。

  如果可用物理内存小于用户模式虚拟地址空间,则无法启用 AWE。


2. 版本限制

  只有 SQL Server Enterprise Edition、Standard Edition 和 Developer Edition 支持 AWE,并且 AWE 只能应用于 32 位操作系统。Analysis Services 不能利用 AWE 映射内存。

   缓冲池最多可以访问 64 GB 内存。


3. 后续版本

  SQL Server 2012删除了该功能。如果需要使用超过4GB的物理内存,请使用64位版本的SQL Server 2012。



本文结语:

  在32位操作系统中启用AWE将带来性能的提升。建议使用64位操作系统与64位SQL Server。