SQLSERVER中的AWE功能

SQLSERVER中的AWE功能

由于32位Windows用户进程有4GB的虚拟地址空间。其中2GB给核心态,剩下2GB给用户态。这两部分严格分开。Windows不会因为其中某一块

内存地址空间用尽而将另外一块的空间让出。

 

由于SQLSERVER的绝大部分指令都运行在用户态下,就是说SQLSERVER的内存基本上使用用户态地址空间资源。现在的情况是2GB地址空间资源

对于SQLSERVER来说严重阻碍了SQLSERVER有效利用硬件资源

 

所以SQLSERVER引入了AWE address windowsing extensions(地址空间扩展)。这是允许32位应用程序分配64GB物理内存,并把视图或窗口

映射到2GB虚拟地址空间的机制。

使用AWE,使得一个应用程序能够访问最多达64GB的物理内存!!!

 在SQL2000的企业版,SQL2005/2008的企业版和标准版都支持这个技术,也能够享受这个技术带来的好处

开启这个功能的语句,执行完之后,重启SQLSERVER服务即可

1 EXEC sys.sp_configure @configname = 'AWE Enabled', -- varchar(35)
2     @configvalue = 1 -- int
3 RECONFIGURE
4 GO

 

AWE具体实现图

 

 有几点需要注意的:

(1)开启这个功能需要SQLSERVER启动帐户在Windows上的lock pages in memory权限。没有这个权限,AWE就不能成功被开启。

启动的SQLSERVER这时候只能使用2GB的地址空间。

所以DBA要确认一下SQLSERVER的errorlog里有没有相关的信息
成功开启:server  Address Windowing Extensions enabled
消息
Address Windowing Extensions is enabled. This is an informational message only; no user action is required.
开启失败:Cannot use Address Windowing Extensions because lock memory privilege was not granted

(2)这个功能是在应用层面有意识地使用,而不是在Windows层面实施的。也就是说SQLSERVER在申请内存时,通过特殊API调用申请到的,

如果SQLSERVER不调用这个功能,就还会在普通的2GB虚拟地址空间申请内存。在SQLSERVER中不是所有的内存申请都会调用AWE技术,

只有先reserve,再commit的内存调用,SQLSERVER才使用AWE让他们使用到扩展的内存。其他方式申请的内存只能使用普通的2GB地址空间。

 

正因为这样,AWE不能称为解决SQLSERVER地址空间不足的最终解决方案。使用64位的服务器,虚拟地址空间可以达到8TB,

大于现在绝大多数的单个服务器的物理内存数。在64位下运行的SQLSERVER,其性能往往比在32位上有比较明显的提高。 

 

最后附上各个版本Windows上支持的最大内存数
            配置                                                          应用虚拟地址空间大小        最大物理内存数         是否支持AWE/locked pages support 
32位SQLSERVER                                                             2GB                            64GB                       YES
32位SQLSERVER   + /3GB boot.ini参数                              3GB                            16GB                       YES
32位SQLSERVER  应用在x64位操作系统(WOW)                  4GB                            64GB                       YES
32位SQLSERVER  应用在IA64操作系统(WOW)                    2GB                             2GB                       NO
64位SQLSERVER  应用在x64操作系统                                   8TB                             2TB                        YES
64位SQLSERVER  应用在IA64操作系统                                 7TB                              2TB                        YES

 

 

 

posted @ 2019-08-20 22:13  grj001  阅读(209)  评论(0编辑  收藏  举报