zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微服务架构综述
    何为正确
    如何在github中写出自己的readme文件
    redhat中如何在一块网卡上创建多个虚拟IP
    Vim 编辑器与shell命令脚本
    管道符、重定向与环境变量
    linux常用命令
    Android性能优化总结
    HTTP 协议漫谈
    Zxing QRCode
  • 原文地址:https://www.cnblogs.com/grj001/p/12224345.html
Copyright © 2011-2022 走看看