內存相關概念
以下均是針對Window 32位系統環境下,64位的不在下面描述情況下。
用戶模式和內核模式(user mode& kernel mode)
為了防止用戶程序訪問並篡改操作系統的關鍵部分,Windows使用了2種處理器存取模式:用戶模式和內核模式。顧名思義,內核模式是給操作系統核心代碼和基本驅動用的,用戶模式給用戶應用程序。在內核模式下程序可以訪問所有的內存和硬件,並使用所有的處理器指令。操作系統程序比用戶程序有更高的權限,使得系統設計者可以確保用戶程序不會意外的破壞系統的穩定性。
物理內存(Physical Memory)
即實際購買的內存的大小,內存條上的容量。CPU的地址線可以直接進行尋址的內存空間大小,在32位操作系統平台上,CPU的最大尋址空間為4GB,也即可以支持最大4G的物理內存空間。在32位操作系統上即便你購買的是64G內存,也只能說擁有4GB的物理內存空間
虛擬內存(Virtual Memory)
如果計算機缺少運行程序或操作所需的隨機存儲內存,則Windows使用虛擬內存進行補償。虛擬內存將計算機的RAM和硬盤上的臨時空間組合在一起,當RAM不足時,虛擬內存將數據從RAM移動到稱為“分頁文件”的空間中,將數據移入與移出分頁文件可以釋放RAM,以便完成工作。
虛擬地址空間(Virtual Address Space,簡稱VAS)
在Windows系統中,任何一個進程都被賦予了其自己的虛擬地址空間,該虛擬地址空間覆蓋了一個相當大的范圍,對於32位系統的虛擬地址空間范圍從 0x00000000~0xffffffff(4GB)。Windows采用分頁機制,將4G的地址空間分成固定大小的頁,並且將虛擬地址中的每一頁映射 到物理內存中。
在缺省的情況下虛擬地址空間中的低2G,即0x0000000~0x7FFFFFFFF是用戶地址空間,而4G虛擬地址空間中的高2G即0x8000000~0xFFFFFFFF是分配給內核模式。實際上用戶進程擁有的虛擬地址空間只有2GB。
虛擬內存管理器(Virtual Memory Manager)
虛擬內存管理器負責虛擬地址空間和物理內存的地址映射,如果缺乏足夠內存,則需要使用到page file文件來保持臨時數據也即虛擬內存,同時使用page table entry(PTE)來跟蹤每一個地址映射關系。
到這裡為止,64G的內存有60G都無法訪問,豈不是浪費了,那怎麼辦?
/3GB和increaseUserVA
通過/3GB的方式,可以減少內核模式占用地址空間,從而增加SQL Server進程的地址空間。默認情況下,用戶模式和內核模式各自占用2G尋址空間,3G選項可以使得SQL Server獲得多1G的虛擬地址空間。
/3GB開關用法:
在Boot.ini文件中修改其中的段落即可:
或者使用bootcfg命令
在Windows Server 2008中可以運行BCDEdit命令,加以調整。
物理地址擴展PAE(Physical Address Extension)
物理地址擴展(PAE)是32位Intel CPU的一種擴展,這樣可以在32位系統上支持最大64G的物理內存,即4GB以上物理內存允許將更多物理內存映射為應用程序的虛擬地址空間。
使用方式,在Boot.ini文件中修改其中的段落即可: