数据库内存管理

数据库内存管理

ID:46563824

大小:102.50 KB

页数:7页

时间:2019-11-25

数据库内存管理_第1页
数据库内存管理_第2页
数据库内存管理_第3页
数据库内存管理_第4页
数据库内存管理_第5页
资源描述:

《数据库内存管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Introduction在这篇专栏里,我们将从开发者的角度来探讨SQLServer内存管理内幕。就是说,我们将讨论SQLServer使用API和操作系统功能管理内存的方式及其工作原理。通过这种方式探讨一个产品,将有助于我们理解产品开发者的思路,以及他们所设计的使用方法。理解一个产品的工作原理和它的设计用途,是掌握这个产品的关键。我们将从一些基础的Windows内存管理基本原理介绍开始。和所有的32位Windows应用程序一样,SQLServer使用Windows内存管理功能分配、释放、管理内存资源。正如所有其它的Windows应

2、用程序,SQLServer调用Win32内存管理API函数,与操作系统提供的内存资源进行交互。由于SQLServer中几乎所有的内存分配都使用虚拟内存(不是内存堆),因此绝大部分内存分配代码最终都是通过调用Win32的VirtualAlloc或者是VirtualFree函数完成。SQLServer调用VirtualAlloc保留、提交分配的虚拟内存,调用VirtualFree释放虚拟内存。VirtualMemoryvsPhysicalMemory在x86系列处理器上,Windows为所有进程提供一个4GB虚拟内存工作空间。用”虚

3、拟“这个词,意思是这个内存并不是通常意义上的内存,它只是一个地址范围,并没有和物理存储单元关联在一起。当进程请求内存分配时,这些地址空间才被使用,和具体的物理存储单元关联起来。然而这些物理存储单元并不一定是物理内存,它通常可能会是磁盘空间,确切的说,是操作系统的分页文件(SystemPagingFiles)o这就是为什么多个应用程序可以同吋运彳亍在一个128M内存的系统上,每个应用程序都有一个4GB的虚拟内存地址空间一一它不是真正的内存,但对应用程序来说川以理解为内存。Windows透明的处理pagingfiles的数据拷贝,以

4、使应用程序能够使用的内存可以超过机器的实际物理内存,并使应用程序能够公平的存取机器的物理内存。这个4GB的地址空间被分成两部分:usermode部分和kernalmode部分。默认情况下,每个部分的大小为2GB,在WindowsNT系列的操作系统上,可以通过BOOT.INI中的开关來改变这个默认设置(WindowsNT,Windows2000,WindowsXP和WindowsServer2003属于WindowsNT系列,Windows9x和WindowsME不属于)。图1:Windows将进程的虚拟地址空间分成usermod

5、e(应用程序)和kernalmode(操作系统)两个部分每个应用程序拥有白己的虚拟内存地址空间,但操作系统和设备驱动程序共享同一个私有地址空间。每一个虚拟内存页(memorypage)都和特定的处理器模式(processormode)相关联,为了存収某个虚拟内存页,处理器必须工作在要求的模式下。这意味着应用程序不能直接存取kernalmode的虚拟内存,系统必须切换到kernalmode才能存取kernalmode的内存空间。ApplicationMemoryTuning3GB启动选项(Windows2000的AdvancedS

6、erver和DataCenter及后续Windows版木屮可用)允许改变这两个地址空间部分的默认大小。它允许将进程的usermode地址空间从2GB扩展到3GB,相应的代价是kernalmode的地址空间从2GB减小到1GB。用Windows的说法,这个功能叫做ApplicationMemoryTuning或者是4GBTuning(4GT)。你可以通过在BOOT.INI文件的[OperatingSystems]部分添加/3GB开关启用应用ApplicationMemoryTuningo通常情况下,人们通过设置BOOT.INI文件

7、的[OperatingSystems]部分,将系统配置为可以使用3GB或者不使用3GB启动,以使在系统启动时可以进行选择。警告:你也可以在Windows2000Professional和Windows2000Server上使用“GB开关,这样做的负面结果是,将kernalmode的空间减小到了1GB,但并不会增加usermode的空间。换句话说,你减小了kernalmode的空间但并没有获得任何好处。注意:WindowsXP和WindowsServer2003引入了一个新的启动选项/USERVA,和“GB—起使用,比单独使用"G

8、B能够更好的控制。你在BOOT.INI中添加〃GB的时候可以同时添加/USERVA,/USERVA比单独使用/3GB的优点是它允许你指定一个准确的地址空间大小值供usermode存取。例如,/USERVA=2560为usermdoe配置2.5G的空间,剩余的1.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。