AWEについて

AWE(Address Windowing Extensions)とは

2Gbytes(もしくは3Gbytes)のユーザーメモリ空間だけでは扱えないような巨大な物理メモリを直接利用するためのAPI。
AWEは、巨大な物理メモリの一部をユーザーメモリ空間中のウィンドウにマッピングさせて利用する機能であり(MS-DOS当時のEMSメモリなどと同じ考え方)、NT 4.0 サービスパック3以降で利用可能である。
PAEと組み合わせることにより、Windows 2000 Advanced Serverでは、より巨大なアプリケーションを動作させやすくなる。

AWE が使用できる物理メモリ

SQL Server 2000でAWEを利用するための前提条件

AWEを有効にする前に考えなければならない事

Windows 2000 および Windows Server 2003 ではどちらも、AWE メモリをページ ファイルにスワップ アウトすることはできません。
したがって、コンピュータ上で使用される他のすべてのアプリケーションの起動後に、使用可能なメモリ量を特定することによって、SQL Server のインスタンスに安全に割り当てることができるメモリ量を判断する必要があります。

システム モニタの SQL Server の Total Server Memory (KB) カウンタを使用して、AWE モードで実行されている SQL Server のインスタンスに割り当てられているメモリ量を特定します。max server memory オプションを構成するときは、他のアプリケーションや Windows 2000 および Windows Server 2003 に必要なメモリをある程度残すようにします。

SQL Server 2000でAWEを有効にする手順

lock pages in memoryを有効にする

lock pages in memoryとは?

プロセスを使用して物理メモリにデータを保持できるアカウントを指定し、ディスク上の仮想メモリへのデータのページングを防止します。
このオプションは、既定で無効になっています。

lock pages in memoryオプションを有効にするには

※ 重要
32bitOSではAWEを使用しないでこのオプションを有効にすると、システムのパフォーマンスが大きく低下する可能性があります。
64bitOSでは、この設定は必要はありません。

  1. [スタート] メニューの [ファイル名を指定して実行] をクリックします。[名前] ボックスに「gpedit.msc」と入力します。
  2. [グループ ポリシー] ダイアログ ボックスが開きます。
  3. [グループ ポリシー] コンソールで [コンピュータの構成] を展開し、次に [Windows の設定] を展開します。
  4. [セキュリティの設定] を展開し、[ローカル ポリシー] を展開します。
  5. [ユーザー権利の割り当て] フォルダをクリックします。
  6. ポリシーが詳細ペインに表示されます。
  7. 詳細ペインで、[メモリ内のページのロック] をダブルクリックします。
  8. [ローカル セキュリティ ポリシーの設定] ダイアログ ボックスで、[追加] をクリックします。
  9. [ユーザーまたはグループの選択] ダイアログ ボックスで、sqlservr.exe の実行権限のあるアカウントを追加します。

SQL Server 2000 SP4 でAWEを使用する際にはパッチを当てる

SQL Server 2000でAWEオプションを有効にする

  1. 以下のクエリを実行する
    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'awe enabled', 1
    RECONFIGURE
    GO
  2. SQL Server のサービスを再起動する
  3. 以下のクエリを実行する
    sp_configure 'min server memory', 6144
    RECONFIGURE
    GO
    sp_configure 'max server memory', 6144
    RECONFIGURE
    GO
  4. SQL Serverを再起動して下さい
  5. Address Windowing Extensions が有効です。 というメッセージが、SQL Server のログに書き込まれますので確認して下さい
    • Address Windowing Extensions enabled.という英語表記かもしれません
    • イベントログには残っていないので注意する事。必ず、EnterpriseManagerのSQL ログから確認する

AWEの確認

タスク マネージャでは、AWE について正確なメモリ使用状況は提供されません。
したがって、タスクマネージャのsqlservr.exe に対するメモリ量は正しくありません。
SQL Server の正確なメモリ使用量を取得するには、

  1. システム モニタを通じてアクティブ化される Total Server Memory (KB) パフォーマンス カウンタを使用する
  2. sysperfinfo のTotalServerMemory等を参照する

と言った形で確認する必要があります。

参考リンク