爲 SQL Server 啓用 AWE 內存

爲 SQL Server 啓用 AWE 內存

下一版本的 Microsoft SQL Server 將刪除該功能。請不要在新的開發工做中使用該功能,並儘快修改當前還在使用該功能的應用程序。數據庫

地址窗口化擴展插件 (AWE) 可使 32 位操做系統訪問大量內存。AWE 由操做系統公開,而且在 Microsoft Windows 2000 Server 和 Windows Server 2003 中的實現方式稍有不一樣。AWE 是使用awe enabled 選項啓用的。安全

運行在 Windows 2000 上的 MicrosoftSQL Server 實例在 SQL Server 啓動過程當中根據以下事件順序分配內存:服務器

  • 若是可用物理內存小於用戶模式虛擬地址空間,則沒法激活 AWE。在此狀況下,SQL Server 將以非 AWE 模式運行,而無論 awe enabled 選項的設置狀況。性能

  • 若是可用物理內存大於用戶模式虛擬地址空間,則能夠激活 AWE。url

    • 若是可用物理內存大於 max server memory 選項的值,SQL Server 實例會鎖定 max server memory 中指定的內存量。spa

    • 若是可用物理內存小於 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 必須換出其餘應用程序,這樣作可能會影響那些應用程序的性能。code

若不想影響其餘應用程序的性能,請配置 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。若是您中止並從新啓動全部三個實例,內存分配會以下所示:

  1. 第一個實例使用 8 GB 的物理內存。

  2. 第二個實例將啓動,但使用的物理內存將略低於 8 GB(最多減小 128 MB)。

  3. 第三個實例以動態內存模式啓動而且使用 256 MB 的物理內存或更少的物理內存。

有關詳細信息,請參閱管理大型數據庫的內存

在 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 實例爲爭奪內存而競爭。

若是使用的是 SQL Server 故障轉移羣集和 AWE 內存,則必須確保全部實例的 max server memory 設置的總和小於故障轉移羣集中任一服務器上可用的最小物理內存。若是故障轉移節點的物理內存比原節點上的內存小,則 SQL Server 實例可能沒法啓動,或者可能在內存比在原節點上的內存小的狀況下啓動。

相關文章
相關標籤/搜索