sqlserver2000内存管理内幕

sqlserver2000内存管理内幕

ID:9511803

大小:58.00 KB

页数:9页

时间:2018-05-02

sqlserver2000内存管理内幕_第1页
sqlserver2000内存管理内幕_第2页
sqlserver2000内存管理内幕_第3页
sqlserver2000内存管理内幕_第4页
sqlserver2000内存管理内幕_第5页
资源描述:

《sqlserver2000内存管理内幕》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQLServer2000内存管理内幕>>教育资源库  Introduction  在这篇专栏里,我们将从开发者的角度来探讨SQLServer内存管理内幕。就是说,我们将讨论SQLServer使用API和操作系统功能管理内存的方式及其工作原理。通过这种方式探讨一个产品,将有助于我们理解产品开发者的思路,以及他们所设计的使用方法。理解一个产品的工作原理和它的设计用途,是掌握这个产品的关键。  我们将从一些基础的emory  在x86系列处理器上,内存的系统上,每个应用程序都有一个4GB的虚拟内存地址空间--它不是真正的内存,但对应用程序来说可以理解为内

2、存。emoryTuning  3GB启动选项(emoryTuning。通常情况下,人们通过设置BOOT.INI文件的[OperatingSystems]部分,将系统配置为可以使用3GB或者不使用3GB启动,以使在系统启动时可以进行选择。  警告:你也可以在ode的空间。换句话说,你减小了kernalmode的空间但并没有获得任何好处。  注意:doe配置2.5G的空间,剩余的1.5G用于kernalmode。上面的警告信息在使用/USERVA选项时同样适用。  Large-Address-Aode的应用程序只能够对32位指针的前31位表示的地址空间进

3、行存取。对于剩下的1位,一些聪明的开发者不希望浪费进程空间里的这1个位,把它用于了其它的目的,例如用于标识那些应用程序特定的地址分配类型的指针。这在引入/3GB后带来一个难题,因为这种类型的应用程序无法区分引用2GB以上内存的指针,和那些引用2GB以下内存但是最高位由于其它原因而被设置的指针。基本上,使用/3GB启动机器,会使这样的应用程序崩溃。为了解决这个问题,微软在pBin、ImageCfg等可以分析可执行文件头的工具,查看应用程序是否启用了这个标识位。VisualC++通过/LARG1234下一页>>>>这篇文章来自..,。EADDRESSAA

4、GE_FILE_LARGE_ADDRESS_AemoryManagementUnit-MMU)仍然实现了页目录条目(PageDirectoryEntries-PDEs)和页表条目(PageTableEntries-PTEs),但是在这个之上有一个新的层级:页目录指针表(PageDirectoryPointerTable)。PAE模式下系统能够寻址更大的内存,因为PDEs和PTEs为64位宽,是之前标准宽度的两倍,而并不是通过PAE模式下的页目录指针表实现。页目录指针表把这些高存储容量的表和索引管理起来。使用PAE模式需要一个特殊版本的apUserPh

5、ysicalPages或者MapUserPhysicalPagesScatterAPI函数,将需要存取的物理内存映射到这个虚拟内存窗口中。  on等,都无法显示各个进程Aode的地址空间,kernalmode地址空间也由2GB被压缩到1GB。对于kernalmode代码,完整2GB的工作空间已经显得狭窄,压缩这部分空间意味着某些内部核心结构也必须要压缩。这些结构中主要有机器上用于管理内存的表窗口(tableWindoode部分压缩到1GB后,这个表最大就只能管理16GB的物理内存了。例如你在一台具有64GB物理内存的机器上运行Windows2000D

6、ataCenter,启动时使用了/3GB选项,你就只能够存取这台机器25%的内存,剩余的48BG将无法被操作系统和应用程序使用。AWE允许你访问超过3GB的内存,而通过/3GB,你仅仅为私有进程空间获得额外的1GB。LargeAddressAware自动透明的使得这个额外空间对应用程序可用,但它被限制在1GB之内。理论上,AWE通过Win32AWEAPI函数,使得所有对操作系统可用的物理内存对应用程序可用。尽管AWE更难于使用和存取,但它更具弹性和扩展。  并不是说任何情况下AWE都比/3GB好,只是通常状况下是这样。比如说当你需要很多空间以分配内存

7、,而又不能放在AWE内存中(例如象线程栈Th上一页1234下一页>>>>这篇文章来自..,。readStacks、锁内存LockMemory、存储过程计划ProcedurePlans等),你也许会发现/3GB更合适。  MemoryRegions  SQLServer将分配的内存组织成两个独立的区域:BPool和MemToLeave。实际上如果你使用AemToLeave区域被保留,这有利于防止BPool随后的预留造成内存碎片。接下来,BPool被保留,它可以分成多达32个独立预留块,用于满足在BPool保留时SQLServer进程中那些正在请求虚拟地

8、址空间的dll及其它分配请求。在保留BPool区域之后,MemToLeave区域被释放。MemToLeave

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

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

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