針對 SQL Server 啟用 AWE 記憶體

下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。

Address Windowing Extensions (AWE) 允許 32 位元的作業系統存取大量的記憶體。AWE 是由作業系統所公開,而且在 Microsoft Windows 2000 Server 與 Windows Server 2003 中的實作方式稍微不同。AWE 是使用 awe enabled 選項 所啟用的。

搭配使用 AWE 對應記憶體與 Windows 2000 Server

在 Windows 2000 上執行的 Microsoft SQL Server 執行個體會根據下列事件順序,在 SQL Server 啟動期間配置記憶體:

  • 如果可用的實體記憶體小於使用者模式虛擬位址空間,則無法啟動 AWE。在上述情況中,不管 awe enabled 選項的設定是什麼,SQL Server 都會以非 AWE 模式執行。

  • 如果可用的實體記憶體大於使用者模式虛擬位址空間,則可以啟動 AWE。

    • 如果可用的實體記憶體大於 max server memory 選項的值,SQL Server 執行個體就會鎖定 max server memory 所指定的記憶體數量。

    • 如果可用的實體記憶體小於 max server memory 選項的值,或者尚未設定 max server memory 選項,SQL Server 執行個體會保留 256 MB 的可用記憶體,其他記憶體則全部鎖定。

  • 配置之後,在關閉 SQL Server 之前都無法釋放 AWE 對應記憶體。

設定記憶體選項

我們強烈建議您在每次啟用 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。如果停止並重新啟動這三個執行個體,記憶體配置的方式如下:

  1. 第一個執行個體可存取 8 GB 的實體記憶體。

  2. 第二個執行個體會啟動,但存取稍微小於 8 GB 的實體記憶體 (最多會少於 128 MB)。

  3. 第三個執行個體會以動態記憶體模式啟動,可存取小於 256 MB (含) 的實體記憶體。

如需詳細資訊,請參閱<管理大型資料庫的記憶體>。

搭配使用 AWE 對應記憶體與 Windows Server 2003

在 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 的實體記憶體。

設定記憶體選項

搭配任何 Windows Server 2003 作業系統版本執行時,SQL Server 會動態配置 AWE 對應記憶體。換句話說,緩衝集區可以動態管理 AWE 對應記憶體 (在 min server memorymax server memory 選項的條件約束內),以平衡與整體系統需求搭配使用的 SQL Server 記憶體。

啟用 AWE 時,SQL Server 一定會嘗試使用 AWE 對應記憶體。這個動作會套用至所有記憶體組態,包括設定為提供小於 3 GB 使用者模式位址空間給應用程式的電腦。

  • 我們建議您針對在 Windows Server 2003 底下執行的 SQL Server,將 AWE 設定為預設記憶體模式。熱新增記憶體功能需要在 SQL Server 啟動期間啟用 AWE。如需詳細資訊,請參閱<熱新增記憶體>。

[!附註]

64 位元作業系統不需要而且無法設定 AWE。

  • 由於支援的 AWE 對應記憶體低於 3 GB,因此您可以將 min server memorymax server memory 值定義為實體記憶體範圍內的值,或對這兩個選項使用預設值。

  • 您可能考慮設定 SQL Server 的 max server memory,以保證在電腦上操作之其他應用程式可使用的其他記憶體。雖然 SQL Server 可以動態釋放 AWE 對應記憶體,但是目前已配置的 AWE 對應記憶體數量無法空出給分頁檔。

若要讓 SQL Server 執行個體可以使用 AWE,請使用 sp_configureawe enabled 選項設為 1,然後重新啟動 SQL Server。

如需有關 min server memorymax 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 錯誤記錄:「已啟用 Address Windowing Extensions」。

接下來,設定記憶體:

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。

如果將其他記憶體加入支援熱新增記憶體的電腦中,則動態 AWE 記憶體也可讓 SQL Server 增加記憶體。可在 Windows Server 2003 3 Enterprise 和 Datacenter Edition 中使用的熱新增記憶體,在執行電腦的同時也允許加入記憶體。例如,假設在 Windows Server 2003 Enterprise Edition 下執行的 SQL Server 已在具有 16 GB 實體記憶體的電腦上啟動。作業系統設定為將應用程式限制為 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 執行個體可能無法啟動,或會使用少於原始節點的記憶體來啟動。