SQL Server での AWE メモリの有効化

AWE (Address Windowing Extensions) は、32 ビット オペレーティング システムから大容量メモリへのアクセスを可能にします。AWE はオペレーティング システムによって公開され、Microsoft Windows 2000 Server と Windows Server 2003 で実装が若干異なります。AWE を有効化するには awe enabled オプションを使用します。

Windows 2000 Server での AWE マップ メモリの使用

Windows 2000 上で実行される MicrosoftSQL 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 を除いてすべての使用可能なメモリがロックされます。

  • AWE マップ メモリは、いったん割り当てられると、SQL Server がシャットダウンされるまで解放されません。

メモリ オプションの構成

AWE を有効にするたびに、max server memory の値を設定することを強くお勧めします。awe enabled1 に設定されており、かつ使用可能な物理メモリがユーザー モード プロセス空間よりも大きい場合、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 のインスタンスが 3 つインストールされているとします。また、インスタンスごとに、max server memory が 8 GB に設定されているとします。3 つすべてのインスタンスを停止し、再起動した場合、メモリ割り当ては以下のようになります。

  1. 最初のインスタンスには、8 GB の物理メモリが割り当てられます。

  2. 2 番目のインスタンスは起動されますが、8 GB よりもやや少ない (最大でも 128 MB 少ない) 物理メモリが割り当てられます。

  3. 3 番目のインスタンスは動的メモリ モードで起動され、物理メモリは最大で 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 未満のユーザー モード アドレス空間しか割り当てられていないコンピュータも含めて、すべてのメモリ構成に当てはまります。

  • Windows Server 2003 で実行される SQL Server では、既定のメモリ モードとして AWE を設定することをお勧めします。ホット アド メモリ機能を使用するには、SQL Server の起動時に AWE を有効にする必要があります。詳細については、「ホット アド メモリ」を参照してください。
注意注意

AWE は 64 ビット オペレーティング システムには不要であり、構成できません。

  • AWE マップ メモリは、3 GB 未満でサポートされるので、min server memorymax server memory の値を物理メモリの範囲内で定義するか、どちらのオプションにも既定値を使用します。

  • SQL Server の max server memory の設定は、同じコンピュータで実行される他のアプリケーション用に予備のメモリを確保することを考慮して設定することをお勧めします。SQL Server は動的に AWE マップ メモリを解放できますが、現在割り当てられている AWE マップ メモリをページ ファイルにスワップ アウトすることはできません。

SQL Server のインスタンスで AWE を使用できるようにするには、sp_configure を使用して awe enabled オプションを 1 に設定し、SQL Server を再起動します。

min server memorymax server memory の詳細については、「サーバー メモリ オプション」を参照してください。

AWE を有効にする前に、Lock Pages in Memory ポリシーを構成する必要があります。詳細については、「Lock Pages in Memory オプションを有効にする方法 (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 が再起動されると、「Address Windowing Extensions が有効です。」というメッセージが SQL Server エラー ログに書き込まれます。

次に、メモリを構成します。

sp_configure 'min server memory', 1024
RECONFIGURE
GO

sp_configure 'max server memory', 6144
RECONFIGURE
GO

この例では、バッファ プールが 1 ~ 6 GB の間で動的に AWE マップ メモリを管理するように、メモリを設定しました。他のアプリケーションでさらに多くのメモリが必要になった場合、SQL Server は割り当てられている AWE マップ メモリから必要がなくなったメモリを解放できます。この例では、AWE マップ メモリは、最高で 1 GB までしか解放されません。

動的 AWE メモリの場合、ホット アド メモリをサポートするコンピュータにメモリが追加された場合に、SQL Server のメモリ量を増やすことができます。Windows Server 2003 の Enterprise Edition と Datacenter Edition で利用可能なホット アド メモリを使用すると、コンピュータが稼働中でもメモリを追加できます。たとえば、SQL Server を Windows Server 2003 Enterprise Edition で実行し、16 GB の物理メモリを搭載したコンピュータで起動するとします。オペレーティング システムは、アプリケーションが使用する仮想メモリ アドレス空間を 2 GB に制限するよう構成されていて、AWE が SQL Server でアクティブになっているとします。その後、システム管理者が、コンピュータの実行中に 16 GB のメモリを追加すると、SQL Server は直ちに追加されたメモリを認識し、必要に応じてこれを使用します。

AWE の使用方法の詳細については、Windows Server 2003 のマニュアルを参照してください。

AWE モードでの SQL Server の複数インスタンスの実行

SQL Server の複数のインスタンスを 1 台のコンピュータ上で実行していて、各インスタンスが 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 のインスタンスは起動に失敗するか、元のノードよりも少ないメモリで起動される可能性があります。