為SQL Server啟用AWE內存
下一版本的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),而鎖定所有其余的可用內存。
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 實例可能無法啟動,或者可能在內存比在原節點上的內存小的情況下啟動。
【編輯推薦】