SQL Server使用2G以上内存设置方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server使用2G以上内存设置方法
摘要
在32位的Windows 2003 Server中,进程内存被限制为2GB,而目前数据库服务器基本上都配置有4G内存甚至更多,因此如何有效利用多出的内存,是数据库服务器性能优化的重要部分。本文简要介绍了PAE和AWE的原理以及配置方法,使得32位的环境下可以突破2G这一瓶颈,从而提升数据库服务器的效率。
1.AWE简介
目前随着硬件成本的降低,一般的服务器具有4G以上的内存。可能很多人认为,如果使用Winows 2003 Server系统,最高可以支持4G内存。其实这么说并不准确,应该说32位机支持2^32=4G 的寻址空间,但实际上默认应用程序只能占用其中的2G内存,这一限制是32位操作系统架构引起的。传统意义上的32bit操作系统使用32bit的内存地址,这样寻址范围就已经被限制为4GB——4G也就是2的32次方,然而通常操作系统的设计上为了安全性的考虑,应用程序和内核所处的内存地址空间是互相独立的,也就是说,应用程序和内核各自能访问2GB的内存空间。虽然不同的操作系统实现具有不同的值,不过多数现在的操作系统在这一点上都很一致。
为了让程序突破2GB寻址的限制,近代Windows NT核心提供了一个变通的方案:4GB内存调整优化技术,通过这个技术,可以将用户模式的寻址空间扩大至3GB,这样核心寻址空间便被限制为1GB了,需要超大内存容量的应用程序可以从这个特性中获得性能改善,如SQL Server数据库这种类型。要使用这个4GB内存优化技术,用户需要在Windows Server操作系统的启动参数中加入/3GB 开关。
然而让用户模式程序能多寻址1GB毕竟还算是治标不治本,于是Microsoft 还在自己的操作系统中通过PAE 提高IA32 处理器处理大于 4 GB 的物理内存的能力。下列操作系统可以通过PAE 来利用大于 4 GB 的物理内存: Microsoft Windows 2000 Advanced Server
●Microsoft Windows 2000 Datacenter Server
●Microsoft Windows Server 2003 Enterprise Edition
●Microsoft Windows Server 2003 Datacenter Edition
PAE,即物理地址扩展(Physical Address Extension),可使得x86 的计算机能够支持 4 GB 以上物理内存。物理地址扩展(PAE) 允许将最多64 GB 的物理内存用作常规的 4 KB 页面,并扩展内核能使用的位数以将物理内存地址从32 扩展到36。它允许将4G以上更多的物理内存映射为应用程序的虚拟地址空间,这样就可以实际访问到4G 的内存空间了。
应用程序可以通过AWE实现对超出4GB的内存访问,AWE,即地址窗口扩展(Address Windowing Extension),是内存管理器功能的一套应用程序编程接口(API),它使程序能够寻址更多内存—超过标准32 位寻址的4 GB 内存空间。AWE 使程序能够将物理内存保留为非分页内存,然后将非分页内存部分动态映射到程序的内存工作集。此过程使内存密集型程序(如大型数据库系统)能够为数据保留大量的物理内存,而不必交换分页文件以供使用。相反,数据在工作集中进行交换,并且保留的内存超过 4 GB 范围。此外,超出 4 GB 的内存范围对内存管理器是公开的,并且AWE 通过PAE 发挥作用。没有PAE,AWE 就无法保留超出4 GB 的内存。
AWE API集的原理其实是基于这样的一个事实:所有的支持PAE的操作系统
都有能让IA32处理器直接寻址64GB物理地址的API,回想前面的内容,物理地址是CPU处理的地址,而每个程序私有的2GB内存地址被称为虚地址范围。每个支持PAE的操作系统都具有这种API,差别只是在于这些API能否提供如内存共享、进程间通讯、分页等等这些功能,微软在Windows上提供了一个简单明了的API组——也就是AWE地址窗口扩展API组,它仅仅由5个API调用组成,包括了核心级和用户级调用,使用AWE分配得到的内存是非分页、锁定的,其他程序无法访问,也无法交换到页面文件(虚拟内存)上去,对性能具有很大的提升。
通过使用AWE API,核心模式/用户模式可以轻易地突破2GB容量的限制,最高可以达到64GB,如SQL Server就使用了这个AWE API(可设定),从而提高对大容量内存的能力,大大提升了应用软件/系统的性能。
2. AWE的配置方法
2.1.打开操作系统启动时PAE 配置项;
步骤:找到系统安装的引导位置的目录下找到boot.ini文件,默认是隐藏只读的,找到Windows2003 启动配置,在后面加上空格/PAE ,保存;重启
2.2.修改组策略
首先应用程序要满足第一条要求,它必须能具备内存锁定页面功能,这需要在组策略中进行设置,如图所示打开组策略,添加数据库运行所依赖的帐号有权进行锁定内存;大部分情况下,数据库运行的帐号都是系统级的帐号,如administrator 或者是administrators组的帐号,当然也有处于安全考虑的给了一个运行权限很小的帐号,只能运行数据库;所以必须授权该帐号具有锁定内存的权限;
步骤:开始->运行->gpedit.msc->组策略->计算机设置->windows配置->安全设置->本地策略->用户权限分配->内存中锁定页面->本地安全策略设置->添加->选择运行的帐号或者组;
2.3.重启服务器,
远程维护的要查看boot.ini是否正确,切记!否则后果可想而知;
2.4.配置数据库
重启后操作系统已支持大内存了,但数据库还是需要配置的;默认都未配置;执行以下命令即可
步骤:打开查询分析器,进行以下操作,这里以3G内存给数据库使用为例进行操作;
sp_configure'show advanced options',1 -- 打开高级选项
RECONFIGURE
GO
sp_configure'awe enabled',1 -- 打开锁定内存