一、記憶體體系結構
1. 32位作業系統與pae
在 32 位作業系統中,可以訪問 4 gb 的虛擬位址空間。2 gb 的虛擬記憶體專用於程序,由應用程式使用;2 gb 保留給作業系統使用。
在 boot.ini 檔案中使用 /pae 開關,啟用pae(實體地址擴充套件)才能利用超過 4 gb 的記憶體。最多可以訪問到64gb物理記憶體。
2. awe
sql server 支援位址視窗化擴充套件外掛程式 (awe),從而允許在 32 位版本的 microsoft windows 作業系統上使用超過 4 gb 的物理記憶體。最多可支援 64 gb 的物理記憶體。windows server 2003 及後續的作業系統中,sql server 例項使用動態 awe 記憶體分配。
啟動過程中,sql server 僅保留一小部分 awe 對映記憶體。需要額外的 awe 對映記憶體時,作業系統會動態地將其分配給 sql server。同樣,如果需要更少的資源,sql server 會將 awe 對映記憶體返還給作業系統,以供其他程序或應用程式使用。sql server 和作業系統之間的這種平衡受到 min server memory 和 max server memory 引數的限制。
3. 鎖定記憶體頁
必須在啟用 awe 之前為 sql server 啟動帳戶授予 lock page in memory 許可權。
預設情況下,禁用 windows 策略「鎖定記憶體頁」(lock pages in memory)選項。必須啟用此許可權才能配置位址視窗化擴充套件外掛程式 (awe)。此策略將確定哪些帳戶可以使用程序將資料保留在物理記憶體中,從而阻止系統將資料分頁到磁碟的虛擬記憶體中。在 32 位作業系統中,如果在不使用 awe 的情況下設定此許可權會顯著降低系統效能。在 64 位作業系統上不需要在記憶體中鎖定頁。
4. sql server使用awe記憶體的侷限
應用程式申請記憶體有兩種方式,一種是reservrd/committed,另一種是stolen。awe記憶體只適用於前者,使用的過程如下:
(1)reserved
應用程式呼叫windows api,申請保留(reserve)一塊記憶體空間,以供將來使用。此時只是保留一段虛擬位址空間(vas)上面的一段位址,尚未分配真正的物理記憶體空間。
(2)committed
將預先保留的記憶體頁面正式提交(commit)給應用程式使用。此時正式在物理記憶體中申請了一段有效空間。
reservrd/committed技術為需要潛在的、大量的和連續的記憶體緩衝區的應用程式非常有用。sql server記憶體需求中僅有data cache 以這種方式申請記憶體。
也就是說,除了data cache可以使用4gb以上的awe記憶體,sql server 中以stolen方式申請的其它記憶體都不能使用4gb以上的記憶體部分(仍侷限於4gb以內)。因此,借助awe將記憶體擴充到64gb類似於一種虛擬技術,它與64位作業系統的64gb記憶體不可同日而語。
二、啟用awe
go3. 生效
必須重新啟動 sql server 例項,awe 才會生效。
當 sql server 例項啟動時,如果已成功啟用此選項,啟動日誌errorlog會有以下記錄。server address windowing extensions enabled.
二、侷限性
1. 作業系統限制
64 位作業系統上不需要 awe,也不能在該系統上配置 awe。
如果可用物理記憶體小於使用者模式虛擬位址空間,則無法啟用 awe。
2. 版本限制
只有 sql server enterprise edition、standard edition 和 developer edition 支援 awe,並且 awe 只能應用於 32 位作業系統。analysis services 不能利用 awe 對映記憶體。
緩衝池最多可以訪問 64 gb 記憶體。
3. 後續版本
sql server 2012刪除了該功能。如果需要使用超過4gb的物理記憶體,請使用64位版本的sql server 2012。
在32位作業系統中啟用awe將帶來效能的提公升。建議使用64位作業系統與64位sql server。
七 記憶體優化(3)使用DMV
一 sys.dm os memory clerks 1.查詢dmv sys.dm os memory clerks返回sql server例項中當前處於活動狀態的全部記憶體clerk的集合。跟蹤這個dmv,可以看到記憶體是如何被sql server消耗。select type,sum virtual...
七 記憶體優化(3)使用DMV
一 sys.dm os memory clerks 1.查詢dmv sys.dm os memory clerks返回sql server例項中當前處於活動狀態的全部記憶體clerk的集合。跟蹤這個dmv,可以看到記憶體是如何被sql server消耗。select type,sum virtual...
七 記憶體優化(3)使用DMV
一 sys.dm os memory clerks 1.查詢dmv sys.dm os memory clerks返回sql server例項中當前處於活動狀態的全部記憶體clerk的集合。跟蹤這個dmv,可以看到記憶體是如何被sql server消耗。select type,sum virtual...