Sql Server 2000内存调整
时间:2010-04-25 11:24:00
在我们武汉的一个项目中,用户提供的数据库服务器有16G左右的内存,但我们只能使用8G多的内存,为了提高内存的得用率,特意参考了一些资料,得出一些体会总结出来与各位同道人士分亨。
SQL Server 2000 企业版支持使用 Microsoft Windows® 2000 地址窗口扩展 (AWE),为在 Windows 2000 Advanced Server 上运行的实例寻到大约 8GB 的内存,为在 Windows 2000 Data Center 上运行的实例寻到大约 64GB 的内存。然而,每个使用该扩展内存的实例都必须静态分配所需的内存。
一、首先要让操作系统使用更多内存。
"/3GB","awe","pae"这三个开关的组合与AWE设置:
内存超过2GB不到8GB可以选用/3GB参数,超过8GB选用/PAE。
打开boot.ini文件如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /3GB
二、Sql Server设置:
1、3GB寻址
当系统有超过2GB的物理内存空间时,需要在boot.ini配置/3GB的启动参数,应用程序才可以使用超过2GB的物理内存:
multi(0)disk(0)rdisk(0)partition(2)\winnt=
"Windows 2000 Advanced Server" /3GB ...
而一般的应用程序若需要使用超过3GB的内存,必须在联结(link)时,指定/LargeAddressAware 参数,或是事后通过工具程序Imagecfg.exe(包含在Windows 2000 Advanced Server CD中的Support文件夹中)修改执行文件,例如:
Imagecfg -1 myApp.exe
而SQL Server执行在联结时就已经采用 /LargeAddressAware选项,所以若系统启动/3GB功能,就自然可以采用.
2、AWE 内存寻址
一般来说32位的CPU与操作系统受限于寻址能力,最多只能存取到4GB内存,所以前述的两项功能只不过是在分配多少内存给应用程序和多少内存留给操作系统.但若搭配Intel Pentium Pro/Xeon 系统的CPU与"物理地址扩充(PAE Physical Address Extension)"技术,可以让 Windows 2000 Advance Server 存取8GB内存,而Data Center版本可以存取到64GB大小的内存.应用程序可以调用微软提供"地址窗口扩展(AWE Address Windows Extension)"API 来使用到这些内存.
启动PAE的方式与3GB选项相同,都是修改boot.ini:
multi(0)disk(0)rdisk(0)partition(2)\WINNT=
"Windows 2000 Advanced Server" /APE ...
3、/3GB选项和/PAE选项可以一起使用,但这反而会限制只能使用16GB的内存.
当你要启动/PAE选项配置,需要注意:
1).由于启动PAE后,需要锁定一地原来2GB内的用户内存区块,借以对应扩展出去的物理内存,而该内存区块就会被应用程序锁定,而不再被系统当做一般的虚拟内存.因此用来执行SQL Server服务的帐号需要有"Lock Pages In Memory"的权力.若你是通过SQL Server所提供的Enterprise Manager,或是通过程序调用DMO来配置服务帐号,则会自动赋予该帐号相关的权限.但若是采用Windows所附的"服务"管理程序来配置SQL Server服务的执行帐号,则需要自行赋予该权力.
2).任务管理器(Task Manager)无法在AWE启动后,提供某个程序使用内存的正确数字.
3).启动AWE后,SQL Server默认会在启动时吃掉所有的内存,这些内存会阻塞而无法做数据页切换的动作,只留下128MBytes不到的内存给操作系统.所以若还有其他的应用程序,或是第二个SQL Server执行实例(Instance)想要接着执行,可能会因为没有内存而无法启动.因此若要启动AWE模式,最好先配置"Max Server Memory".