>  Introduction  在這篇專欄里,我們將從開發(fā)者的角度來探討SQLServer內(nèi)存管理內(nèi)幕。就是說,我們將討論SQLServer使用API和操作系統(tǒng)功能管理內(nèi)存的方式及其工作原理。通過這">
sql server 2000內(nèi)存管理內(nèi)幕--

sql server 2000內(nèi)存管理內(nèi)幕--

ID:9511776

大?。?8.00 KB

頁數(shù):9頁

時間:2018-05-02

sql server 2000內(nèi)存管理內(nèi)幕--_第1頁
sql server 2000內(nèi)存管理內(nèi)幕--_第2頁
sql server 2000內(nèi)存管理內(nèi)幕--_第3頁
sql server 2000內(nèi)存管理內(nèi)幕--_第4頁
sql server 2000內(nèi)存管理內(nèi)幕--_第5頁
資源描述:

《sql server 2000內(nèi)存管理內(nèi)幕--》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應用文檔-天天文庫

1、SQLServer2000內(nèi)存管理內(nèi)幕>>  Introduction  在這篇專欄里,我們將從開發(fā)者的角度來探討SQLServer內(nèi)存管理內(nèi)幕。就是說,我們將討論SQLServer使用API和操作系統(tǒng)功能管理內(nèi)存的方式及其工作原理。通過這種方式探討一個產(chǎn)品,將有助于我們理解產(chǎn)品開發(fā)者的思路,以及他們所設計的使用方法。理解一個產(chǎn)品的工作原理和它的設計用途,是掌握這個產(chǎn)品的關(guān)鍵?! ∥覀儗囊恍┗A(chǔ)的emory  在x86系列處理器上,內(nèi)存的系統(tǒng)上,每個應用程序都有一個4GB的虛擬內(nèi)存地址空間--它不是真正的內(nèi)存,但對應用程序來說可

2、以理解為內(nèi)存。emoryTuning  3GB啟動選項(emoryTuning。通常情況下,人們通過設置BOOT.INI文件的[OperatingSystems]部分,將系統(tǒng)配置為可以使用3GB或者不使用3GB啟動,以使在系統(tǒng)啟動時可以進行選擇?! 【妫耗阋部梢栽趏de的空間。換句話說,你減小了kernalmode的空間但并沒有獲得任何好處?! ∽⒁猓篸oe配置2.5G的空間,剩余的1.5G用于kernalmode。上面的警告信息在使用/USERVA選項時同樣適用。  Large-Address-Aode的應用程序只能夠?qū)?2位

3、指針的前31位表示的地址空間進行存取。對于剩下的1位,一些聰明的開發(fā)者不希望浪費進程空間里的這1個位,把它用于了其它的目的,例如用于標識那些應用程序特定的地址分配類型的指針。這在引入/3GB后帶來一個難題,因為這種類型的應用程序無法區(qū)分引用2GB以上內(nèi)存的指針,和那些引用2GB以下內(nèi)存但是最高位由于其它原因而被設置的指針。基本上,使用/3GB啟動機器,會使這樣的應用程序崩潰。為了解決這個問題,微軟在pBin、ImageCfg等可以分析可執(zhí)行文件頭的工具,查看應用程序是否啟用了這個標識位。VisualC++通過/LARG1234下一

4、頁>>>>這篇文章來自..,。EADDRESSAAGE_FILE_LARGE_ADDRESS_AemoryManagementUnit-MMU)仍然實現(xiàn)了頁目錄條目(PageDirectoryEntries-PDEs)和頁表條目(PageTableEntries-PTEs),但是在這個之上有一個新的層級:頁目錄指針表(PageDirectoryPointerTable)。PAE模式下系統(tǒng)能夠?qū)ぶ犯蟮膬?nèi)存,因為PDEs和PTEs為64位寬,是之前標準寬度的兩倍,而并不是通過PAE模式下的頁目錄指針表實現(xiàn)。頁目錄指針表把這些高存儲容

5、量的表和索引管理起來。使用PAE模式需要一個特殊版本的apUserPhysicalPages或者MapUserPhysicalPagesScatterAPI函數(shù),將需要存取的物理內(nèi)存映射到這個虛擬內(nèi)存窗口中?! n等,都無法顯示各個進程Aode的地址空間,kernalmode地址空間也由2GB被壓縮到1GB。對于kernalmode代碼,完整2GB的工作空間已經(jīng)顯得狹窄,壓縮這部分空間意味著某些內(nèi)部核心結(jié)構(gòu)也必須要壓縮。這些結(jié)構(gòu)中主要有機器上用于管理內(nèi)存的表窗口(tableWindoode部分壓縮到1GB后,這個表最大就只能管理

6、16GB的物理內(nèi)存了。例如你在一臺具有64GB物理內(nèi)存的機器上運行Windows2000DataCenter,啟動時使用了/3GB選項,你就只能夠存取這臺機器25%的內(nèi)存,剩余的48BG將無法被操作系統(tǒng)和應用程序使用。AWE允許你訪問超過3GB的內(nèi)存,而通過/3GB,你僅僅為私有進程空間獲得額外的1GB。LargeAddressAware自動透明的使得這個額外空間對應用程序可用,但它被限制在1GB之內(nèi)。理論上,AWE通過Win32AWEAPI函數(shù),使得所有對操作系統(tǒng)可用的物理內(nèi)存對應用程序可用。盡管AWE更難于使用和存取,但它更具

7、彈性和擴展?! 〔⒉皇钦f任何情況下AWE都比/3GB好,只是通常狀況下是這樣。比如說當你需要很多空間以分配內(nèi)存,而又不能放在AWE內(nèi)存中(例如象線程棧Th上一頁1234下一頁>>>>這篇文章來自..,。readStacks、鎖內(nèi)存LockMemory、存儲過程計劃ProcedurePlans等),你也許會發(fā)現(xiàn)/3GB更合適?! emoryRegions  SQLServer將分配的內(nèi)存組織成兩個獨立的區(qū)域:BPool和MemToLeave。實際上如果你使用AemToLeave區(qū)域被保留,這有利于防止BPool隨后的預留造成內(nèi)存碎

8、片。接下來,BPool被保留,它可以分成多達32個獨立預留塊,用于滿足在BPool保留時SQLServer進程中那些正在請求虛擬地址空間的dll及其它分配請求。在保留BPool區(qū)域之后,MemToLeave區(qū)域被釋放。MemToLeave用于SQL

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。