一、Windows内存管理
虚拟内存(页面文件),pagefile.sys,默认大小是计算机RAM(物理内存)大小的1.5倍。对于数据库服务器而言,可以适当增加虚拟内存的容量。
在内存与磁盘上按单元存取的数据称为页(Page)。在页文件与物理内存间移动数据称为交换(Swapping)或页面高度(Paging)。如果希望SQL Server能更高效地运行,则要想办法不让SQL Serverr的页被交换。
虚拟内存(页面文件),pagefile.sys,默认大小是计算机RAM(物理内存)大小的1.5倍。对于数据库服务器而言,可以适当增加虚拟内存的容量。
在内存与磁盘上按单元存取的数据称为页(Page)。在页文件与物理内存间移动数据称为交换(Swapping)或页面高度(Paging)。如果希望SQL Server能更高效地运行,则要想办法不让SQL Serverr的页被交换。
可参考如下方法配置Windows虚拟内存,从而优化系统的性能:
1)在多个磁盘驱动器上划分虚拟内存空间。
2)将虚拟内存从速度较慢或访问量较大的驱动器上删除。
3)尽量避免将页面文件和系统文件放置在一个磁盘驱动器上。
4)不要在一个物理磁盘驱动器的不同分区上放置多个页面文件。
1)在多个磁盘驱动器上划分虚拟内存空间。
2)将虚拟内存从速度较慢或访问量较大的驱动器上删除。
3)尽量避免将页面文件和系统文件放置在一个磁盘驱动器上。
4)不要在一个物理磁盘驱动器的不同分区上放置多个页面文件。
二、优化Windows内存性能
修改注册表优化Windows的内存性能:regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management位置有一组可以优化内存性能的注册表项:
1)DisablePagingExecutive:设置禁用内存页面调度。在默认情况下,此注册表项被设置为0,此时Windows会定期把内存中的片断写入硬盘,如需要使用此数据时,再次从硬盘中将它们读取到内存中,这样会浪费系统资源,故将该选项的值设置为1,禁止内存页面调度。
2)LargeSysemCache:将该选项的值设置为1,系统将启用大型文件系统缓存,即分配更多的内存空间给文件系统。增加文件系统缓存会增高服务器的性能,但这样也会减少应用程序和服务的可用内存数据。该选项默认值为1,如果是SQL Server数据库服务器,则建议将该选项值设置为0。这样可以减少文件系统的缓存,将内存更多地分配给SQL Server。
修改注册表优化Windows的内存性能:regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management位置有一组可以优化内存性能的注册表项:
1)DisablePagingExecutive:设置禁用内存页面调度。在默认情况下,此注册表项被设置为0,此时Windows会定期把内存中的片断写入硬盘,如需要使用此数据时,再次从硬盘中将它们读取到内存中,这样会浪费系统资源,故将该选项的值设置为1,禁止内存页面调度。
2)LargeSysemCache:将该选项的值设置为1,系统将启用大型文件系统缓存,即分配更多的内存空间给文件系统。增加文件系统缓存会增高服务器的性能,但这样也会减少应用程序和服务的可用内存数据。该选项默认值为1,如果是SQL Server数据库服务器,则建议将该选项值设置为0。这样可以减少文件系统的缓存,将内存更多地分配给SQL Server。
三、优化SQL Server服务器的磁盘性能
1)尽量不要在数据库服务器上安装其他应用程序(会产生更多的磁盘操作)
2)将虚拟内存产生的页文件放置在独立的磁盘驱动器器上(不是一个独立的磁盘分区)
3)提高内存的容量(如果内存容量较小,数据会交常发生交换,从而造成对磁盘频繁的访问,内存容量越大,使用虚拟内存的机会就越小)
4)磁盘碎片整理(可以回快磁盘碰头定位数据的速度,提高磁盘工作效率,减少磁盘的磨损,从而提高磁盘的寿命)
1)尽量不要在数据库服务器上安装其他应用程序(会产生更多的磁盘操作)
2)将虚拟内存产生的页文件放置在独立的磁盘驱动器器上(不是一个独立的磁盘分区)
3)提高内存的容量(如果内存容量较小,数据会交常发生交换,从而造成对磁盘频繁的访问,内存容量越大,使用虚拟内存的机会就越小)
4)磁盘碎片整理(可以回快磁盘碰头定位数据的速度,提高磁盘工作效率,减少磁盘的磨损,从而提高磁盘的寿命)
四、应用情景
1、SQL Server对大容量内存的支持
32位操作系统中,应用程序无法访问大于4GB的进程地址空间,因为32位的指针无法保存大于4GB的地址空间。
SQL Server使用地址窗口化扩展插件(AWE)可以支持非常大的物理内存。SQL Server在32位操作系统上支持的最大内存为64GB。
AWE是Windows的内存管理功能的一组扩展,它允许应用程序获取物理内存,然后将非分页内存的视图动态映射到32位地址空间。虽然32位地址空间限制为4GB,但是非分页内存却可以远远大于4GB。
1、SQL Server对大容量内存的支持
32位操作系统中,应用程序无法访问大于4GB的进程地址空间,因为32位的指针无法保存大于4GB的地址空间。
SQL Server使用地址窗口化扩展插件(AWE)可以支持非常大的物理内存。SQL Server在32位操作系统上支持的最大内存为64GB。
AWE是Windows的内存管理功能的一组扩展,它允许应用程序获取物理内存,然后将非分页内存的视图动态映射到32位地址空间。虽然32位地址空间限制为4GB,但是非分页内存却可以远远大于4GB。
1)启动物理地址扩展:(PAE)x86
方法如下:
a.找到C:\Boot.ini,并删除只读属性。(该文件是隐藏文件)
b.编辑Boot.ini,在ARC路径中添加/PAE参数。如Win2003 EE中,编辑后的ARC路径如下:
multi(0)rdisk(0)partition(1)\WINDOWS="Wdinwos Server 2003,Enterprise" /fastdetect /PAE
保存后恢复为只读模式,然后重新启动计算机。
方法如下:
a.找到C:\Boot.ini,并删除只读属性。(该文件是隐藏文件)
b.编辑Boot.ini,在ARC路径中添加/PAE参数。如Win2003 EE中,编辑后的ARC路径如下:
multi(0)rdisk(0)partition(1)\WINDOWS="Wdinwos Server 2003,Enterprise" /fastdetect /PAE
保存后恢复为只读模式,然后重新启动计算机。
2)取消3gb配置:
如果计算机上的可用物理内存超过16GB,操作系统就需要2GB的虚拟内存地址空间供系统使用,因此只能支持2GB的用户模式虚拟地址空间。为了操作系统能够使用超过16GB的内存,应确保boot.ini文件中没有/3gb参数。如果存在该参数,操作系统就不能使用超过16GB的物理内存。
如果计算机上的可用物理内存超过16GB,操作系统就需要2GB的虚拟内存地址空间供系统使用,因此只能支持2GB的用户模式虚拟地址空间。为了操作系统能够使用超过16GB的内存,应确保boot.ini文件中没有/3gb参数。如果存在该参数,操作系统就不能使用超过16GB的物理内存。
下面介绍如何在SQL Server中启动AWE选项。使用sp_configure存储过程可以查看和设置服务器配置选项。
a.将参数awe enabled设置为1可以启动AWE选项。awe enabled参数是高级配置选项,需要使用启用show advanced option选项,才能查看其内容,代码如下:
sp_configure 'show advanced option',1
RECONFIGURE
GO
RECONFIGURE命令可以更新使用sp_configure设置的配置选项,使其生效。
b.然后执行下面的命令设置awe enabled选项:
sp_configure 'awe enabled',1
RECONFIGURE
GO
a.将参数awe enabled设置为1可以启动AWE选项。awe enabled参数是高级配置选项,需要使用启用show advanced option选项,才能查看其内容,代码如下:
sp_configure 'show advanced option',1
RECONFIGURE
GO
RECONFIGURE命令可以更新使用sp_configure设置的配置选项,使其生效。
b.然后执行下面的命令设置awe enabled选项:
sp_configure 'awe enabled',1
RECONFIGURE
GO