下一版本的Microsoft SQL Server 將刪除該功能。請不要在新的開發工作中使用該功能,並儘快修改當前還在使用該功能的應用程式。
地址視窗化擴充外掛程式(AWE) 可以使32 位作業系統訪問大量記憶體。AWE 由作業系統公開,並且在 Microsoft Windows 2000 Server 和 Windows Server 2003 中的實現方式稍有不同。AWE 是使用 awe enabled 選項啟用的。
在 Windows 2000 Server 中使用 AWE 映射記憶體
運行在 Windows 2000 上的 MicrosoftSQL Server 執行個體在 SQL Server 啟動過程中根據如下事件順序分配記憶體:
如果可用實體記憶體小於使用者模式虛擬位址空間,則無法啟用 AWE。在此情況下,SQL Server 將以非 AWE 模式運行,而不管 awe enabled 選項的設定情況。
如果可用實體記憶體大於使用者模式虛擬位址空間,則可以啟用 AWE。
如果可用實體記憶體大於 max server memory 選項的值,SQL Server 執行個體會鎖定 max server memory 中指定的記憶體量。
如果可用實體記憶體小於 max server memory 選項的值或如果尚未設定 max server memory 選項,SQL Server 執行個體只留下 256 MB (MB),而鎖定所有其餘的可用記憶體。
AWE 映射記憶體一經分配便無法釋放,除非關閉 SQL Server。
配置記憶體選項
極力建議每次啟用 AWE 時都為 max server memory 設定一個值。如果 awe enabled 設定為 1並且可用實體記憶體大於使用者模式進程空間),則啟動伺服器後,運行在 Windows 2000 上的 SQL Server 執行個體將鎖定幾乎所有的可用記憶體或 max server memory 的值指定的記憶體,如果設定了此選項的話)。如果尚未設定 max server memory,則其他應用程式或 SQL Server 執行個體的可用實體記憶體將小於 128 MB。
無法將 AWE 映射記憶體池換出到分頁系統檔案。如果需要使用額外實體記憶體,Windows 必須換出其他應用程式,這樣做可能會影響那些應用程式的效能。
若不想影響其他應用程式的效能,請配置 max server memory 留出一些額外可用記憶體以備其他應用程式和作業系統的不時之需。可以通過瞭解電腦上使用的所有其他應用程式啟動之後還有多少記憶體可用,來確定可安全分配給 SQL Server 執行個體的記憶體量。
注意
在 Windows 2000 Server 中,SQL Server AWE 將忽略 min server memory。
使用 SQL Server 效能監控器 Total Server Memory (KB) 計數器可以確定在 AWE 模式下啟動並執行 SQL Server 執行個體所分配的記憶體量,也可以從 sysperfinfo 中選擇記憶體使用量量來確定執行個體所分配的記憶體量。
有關詳細資料,請參閱監視記憶體使用量量。
使用 AWE 運行 SQL Server 的多個執行個體
如果伺服器啟動並執行是 Windows 2000,則每個執行個體都應具有 max server memory 設定。由於 Windows 2000 作業系統上啟動並執行 SQL Server 不支援動態分配 AWE 映射記憶體,因此,建議為每個執行個體都設定 max server memory 選項。
所有執行個體的 max server memory 值的總和應小於電腦的總實體記憶體。如果總和大於總實體記憶體,某些執行個體或者不會啟動,或者所使用的記憶體小於 max server memory 設定所指定的記憶體量。例如,假設某台電腦有 16 GB 的實體記憶體,並且在該電腦上安裝了三個 SQL Server 執行個體。並且,每個執行個體的 max server memory 設定為 8 GB。如果您停止並重新啟動所有三個執行個體,記憶體配置會如下所示:
第一個執行個體使用 8 GB 的實體記憶體。
第二個執行個體將啟動,但使用的實體記憶體將略低於 8 GB最多減少 128 MB)。
第三個執行個體以動態記憶體模式啟動並且使用 256 MB 的實體記憶體或更少的實體記憶體。
有關詳細資料,請參閱管理大型資料庫的記憶體。
在 Windows Server 2003 中使用 AWE 映射記憶體
在 Windows Server 2003 中,SQL Server 支援動態分配 AWE 記憶體。啟動過程中,SQL Server 僅保留一小部分 AWE 映射記憶體。當需要額外的 AWE 映射記憶體時,作業系統便會將其動態分配給 SQL Server。同樣,如果所需的資源較少,則 SQL Server 可將 AWE 映射記憶體返回到作業系統,以供其他進程或應用程式使用。有關 awe enabled 配置選項的詳細資料,請參閱 awe enabled 選項。
Windows Server 2003 系列所支援的實體記憶體量有所增加。AWE 可使用的實體記憶體取決於您所使用的作業系統。下面的列表列出了寫入時每個 Windows Server 2003 作業系統版本可以使用的最大實體記憶體。
Windows Server 2003 Standard Edition 最高支援 4 GB 的實體記憶體。
Windows Server 2003 Enterprise Edition 最高支援 32 GB 的實體記憶體。
Windows Server 2003 Datacenter Edition 最高支援 64 GB 的實體記憶體。
配置記憶體選項
SQL Server 在任何 Windows Server 2003 作業系統版本上運行時,都會動態地分配 AWE 映射記憶體。換言之,緩衝池可以動態管理 AWE 映射記憶體在 min server memory 和 max server memory 選項的約束內),以按照總體系統要求平衡 SQL Server 記憶體的使用。
啟用 AWE 後,SQL Server 將始終嘗試使用 AWE 映射記憶體。這適用於所有記憶體配置,包括配置以提供給應用程式低於 3 GB 使用者模式地址空間的電腦。
建議將 AWE 設為在 Windows Server 2003 上啟動並執行 SQL Server 的預設記憶體模式。熱添加記憶體功能要求在啟動 SQL Server 過程中啟用 AWE。有關資訊,請參閱熱添加記憶體。
注意
64 位元作業系統上不需要 AWE,也不能在這種系統上配置 AWE。
由於所支援的 AWE 映射記憶體容量在 3 GB 以下,因此,可在實體記憶體範圍內定義 min server memory 和 max server memory 的值,或使用這兩個選項的預設值。
可以考慮設定 SQL Server 的 max server memory 以保證其他記憶體能用於運行在電腦上的其他應用程式。雖然 SQL Server 可動態釋放 AWE 映射記憶體,但當前已指派的 AWE 映射記憶體量無法換出分頁檔。
若要使 SQL Server 執行個體能夠使用 AWE,請使用 sp_configure 將 awe enabled 選項設定為 1,然後重新啟動 SQL Server。
有關 min server memory 和 max server memory 的詳細資料,請參閱伺服器記憶體選項。
在啟用 AWE 之前,必須先配置“鎖定記憶體頁”策略。有關詳細資料,請參閱如何啟用“鎖定記憶體頁”選項 (Windows)。
樣本
下面的樣本顯示如何啟用 AWE 以及如何為 min server memory 配置 1 GB 的限制,為 max server memory 配置 6 GB 的限制。
首先,配置 AWE:
- sp_configure 'show advanced options', 1
- RECONFIGURE
- GO
-
- sp_configure 'awe enabled', 1
- RECONFIGURE
- GO
重新啟動 SQL Server 之後,會將以下訊息寫入 SQL Server 錯誤記錄檔中:“已啟用地址視窗化擴充外掛程式。”
然後,配置記憶體:
- sp_configure 'min server memory', 1024
- RECONFIGURE
- GO
-
- sp_configure 'max server memory', 6144
- RECONFIGURE
- GO
在此樣本中,記憶體設定引導緩衝池在 1 GB 和 6 GB 之間動態管理 AWE 映射記憶體。如果其他應用程式需要額外的記憶體,則 SQL Server 可釋放不再需要的已指派 AWE 映射記憶體。在此樣本中,AWE 映射記憶體最多隻能釋放 1 GB。
如果將額外的記憶體添加到支援熱添加記憶體的電腦中,則 SQL Server 也可以使用動態 AWE 記憶體來增加記憶體。Windows Server 2003 Enterprise Edition 和 Datacenter Edition 中提供了熱添加記憶體,因而允許在電腦運行時增加記憶體。例如,假設在具有 16 GB 實體記憶體的電腦上啟動在 Windows Server 2003 Enterprise Edition 上啟動並執行 SQL Server。將作業系統配置為限制應用程式可使用 2 GB 的虛擬記憶體地址空間;並且已在 SQL Server 上啟用 AWE。稍後,在電腦運行時系統管理員要添加 16 GB 的記憶體。SQL Server 會立即識別添加的記憶體,並且,如有必要,可以利用這些記憶體。
有關使用 AWE 的詳細資料,請參閱 Windows Server 2003 文檔。
使用 AWE 運行 SQL Server 的多個執行個體
如果在同一台電腦上運行多個 SQL Server 執行個體,並且每個執行個體都使用 AWE 映射記憶體,則應確保這些執行個體均按預期方式執行。
如果伺服器啟動並執行是 Windows Server 2003,則每個執行個體都應設定 min server memory。由於在 Windows Server 2003 上啟動並執行 SQL Server 支援動態 AWE 映射記憶體管理,因此,建議為每個執行個體都設定 min server memory 選項。由於 AWE 映射記憶體無法換出分頁檔,因此,所有執行個體的 min server memory 值的總和應小於電腦上的物理總記憶體。
啟動時,min server memory 選項不會強制 SQL Server 擷取最小量的記憶體。基於資料庫工作負載按需分配記憶體。但是,達到 min server memory 閾值後,如果 SQL Server 為自己保留的記憶體小於該量,則 SQL Server 將不釋放記憶體。因此,若要確保每個執行個體所分配的記憶體至少等於 min server memory 值,建議您啟動後立即執行資料庫伺服器載入。伺服器正常運行時,每一執行個體的可用記憶體會隨時變化,但決不會小於 min server memory 值。
可以設定 max server memory 或將該選項保留為預設設定。將 max server memory 保留為預設值將導致 SQL Server 執行個體為爭奪記憶體而競爭。
一起使用 AWE 和容錯移轉叢集
如果使用的是 SQL Server 容錯移轉叢集和 AWE 記憶體,則必須確保所有執行個體的 max server memory 設定的總和小於容錯移轉叢集中任一伺服器上可用的最小實體記憶體。如果容錯移轉節點的實體記憶體比原節點上的記憶體小,則 SQL Server 執行個體可能無法啟動,或者可能在記憶體比在原節點上的記憶體小的情況下啟動。
原文地址
查看更多相關文章
編輯精選】