為SQL Server啟用AWE記憶體

iSQlServer發表於2010-12-28

下一版本的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:

  1. sp_configure 'show advanced options', 1  
  2. RECONFIGURE  
  3. GO  
  4.  
  5. sp_configure 'awe enabled', 1  
  6. RECONFIGURE  
  7. GO 

重新啟動 SQL Server 之後,會將以下訊息寫入 SQL Server 錯誤日誌中:“已啟用地址視窗化擴充套件外掛。”

然後,配置記憶體:

  1. sp_configure 'min server memory', 1024  
  2. RECONFIGURE  
  3. GO  
  4.  
  5. sp_configure 'max server memory', 6144  
  6. RECONFIGURE  
  7. 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 例項可能無法啟動,或者可能在記憶體比在原節點上的記憶體小的情況下啟動。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-682714/,如需轉載,請註明出處,否則將追究法律責任。

相關文章