SQL Server 2005 Tips and Tips
第 6 回 2 GB を超える物理メモリを SQL Server が使用できるように設定しよう
公開日: 2008 年 4 月 14 日
長崎友嘉
このページの内容は公開・更新された当時のものです。
SQL Server 2005 の "はまりがち" なトピックを、毎月 1 つずつ取り上げて具体的に解説する「SQL Server 2005 Tips and Tips」。第 5 回からは、マイクロソフト社サポート担当への問い合わせが多い環境設定に関するトピックを中心に、わかりやすい解説をお届けしています。
第 6 回となる今回は、「2 GB を超える物理メモリを SQL Server が使用できるようにするための設定」を解説します。物理メモリが 2 GB を超えているコンピュータにおいて、32 bit 版 Windows 上で SQL Server DB Engine が動作している場合に、設定不足によりメモリ領域を十分に活用できていないケースが考えられます。
2 GB を超える物理メモリを SQL Server が使用できるように設定するためには、「物理メモリのサイズ」、「Windows のバージョンおよびエディション」、「SQL Server 2005 のエディション」、さらには同一 OS 上で動作する他のサービスが使用するメモリ サイズを考慮して設定を行う必要があります。
なお、今回のテーマの対象は 32 bit 版 Windows 上で動作する SQL Server 2005 (32 bit 版) となります。64 bit 版 Windows 上で動作する SQL Server 2005 (64 bit 版および WOW64 として動作する 32 bit 版)、ならびに SQL Server 2000 以前については対象外とさせていただいておりますのでご了承ください。
トピック
必要な前提知識
「2 GB を超える物理メモリを SQL Server が使用できるように設定する」ための前提知識として、
- 32 bit 版 Windows の「ユーザー モード アドレス空間」と「カーネル モード アドレス空間」
- boot.ini ファイルの「/3GB スイッチ」
- boot.ini ファイルの「/PAE スイッチ」
- Windows ポリシーの「Lock Pages in Memory オプション (権限)」
- SQL Server 2005 データベース エンジン の「awe enabled オプション」
- SQL Server 2005 データベース エンジン の「max server memory オプション」と「min server memory オプション」
に関する理解が必要です。
ここでは簡単な説明を行います。詳細については参考資料の Web ページをご確認ください。
32 bit 版 Windows の「ユーザー モード アドレス空間」と「カーネル モード アドレス空間」
32 bit 版の Windows では最大 4 GB の「プロセス アドレス空間」と呼ばれるメモリ領域を使用することができます。 この 4 GB の「プロセス アドレス空間」のうち、ユーザー アプリケーションからアクセスできる領域は「ユーザー モード アドレス空間」と呼称され、2 GB に制限されています。残りの 2 GB は OS 用に予約されており、「カーネル モード アドレス空間」と呼称されます。
.gif)
図 1: プロセス アドレス空間
後述する「/PAE スイッチ」の指定などの特別な設定を行っていない 32 bit 版の Windows 上で (32 bit 版の) SQL Server 2005 データベース エンジン を動作させた場合、SQL Server 2005 データベース エンジン が使用できるメモリ領域は最大 2 GB に制限されます。
エディションによる制限についてはここでは無視しています。SQL Server のエディションに依存する、サポートされるメモリ サイズの制限については、以下の Web ページをご確認ください。
boot.ini ファイルの「/3GB スイッチ」
boot.ini ファイルに「/3GB スイッチ」を指定することにより、OS 用に予約されている「カーネル モード アドレス空間」を 1 GB に低減させて、ユーザー アプリケーションからアクセスできる「ユーザー モード アドレス空間」を 3 GB に増加させることができます。
.gif)
図 2: 「/3GB スイッチ」を指定したプロセス アドレス空間
「/3GB スイッチ」を指定した 32 bit 版の Windows 上で (32 bit 版の) SQL Server 2005 データベース エンジン を動作させた場合、SQL Server 2005 データベース エンジン が使用できるメモリ領域は最大 3 GB となります。
「/3GB スイッチ」を指定可能な Windows のバージョンおよびエディションについては、以下の Web ページを参照してください。
boot.ini ファイルの「/PAE スイッチ」
boot.ini ファイルに「/PAE スイッチ」を指定することにより、32 bit 版の Windows でも 4 GB を超えるメモリ領域を使用することができるようになります。
PAE (Physical Address Extension) は、4 GB を超える物理メモリに対してアドレス指定を行うための IA-32 プロセッサの拡張機能であり、Windows メモリ マネージャの拡張機能でもあります。物理メモリのアドレス指定に使用できるビット数を 32 bit から 36 bit に拡張し、最大 64 GB の物理メモリをサポートします。
.gif)
図 3: 「/PAE スイッチ」による 4 GB 超のメモリ領域
「/PAE スイッチ」を指定した 32 bit 版の Windows 上で (32 bit 版の) SQL Server 2005 データベース エンジン を動作させた場合、SQL Server 2005 データベース エンジン が使用できるメモリ領域は OS がサポートする最大容量と同一となります。
「/PAE スイッチ」を指定可能な Windows のバージョンおよびエディションについては、以下の Web ページを参照してください。
16 GB を超える物理メモリがある場合、「/3GB スイッチ」と「/PAE スイッチ」の同時指定は推奨されません。詳細は以下の Web ページを参照してください。
Windows Server 2003 Enterprise Edition および Windows Server 2003 Datacenter Edition でホット アド メモリ デバイスを利用している場合、「/PAE スイッチ」が自動的に有効に設定されます。
Windows ポリシーの「Lock Pages in Memory オプション (権限)」
Windows ポリシーの「Lock Pages in Memory オプション (権限)」では、プロセスを使用して物理メモリ上にデータを保持することができるアカウントを指定します。
後述する SQL Server 2005 データベース エンジン の「awe enabled オプション」を有効化するためには、事前に SQL Server サービスの実行アカウントにこの「Lock Pages in Memory オプション (権限)」を設定 (権限付与) しておく必要があります。
SQL Server 2005 データベース エンジンの「awe enabled オプション」
AWE (Address Windowing Extensions) は、Windows メモリ マネージャの拡張機能である PAE を利用し、32 bit 版 Windows での使用限度である 4 GB を超えるメモリ領域に対してアドレス指定を行うことを可能にする API です。
プログラムで AWE API を使用することにより、32 bit 版 Windows で「ユーザー モード アドレス空間」として通常使用可能な 2 GB (スイッチ指定なしの場合) ~ 3 GB (「/3 GB スイッチ」を指定した場合) よりも大きいサイズのメモリ領域をユーザー アプリケーションで使用することができるようになります。
SQL Server 2005 データベース エンジン では、AWE API を使用することで 32 bit 版 Windows 上で最大 64 GB の物理メモリをサポートしています。
| 32 bit 版 Windows 上でサポートされる物理メモリ |
| Windows 2000 Server | 最大 4 GB |
| Windows 2000 Advanced Server | 最大 32 GB |
| Windows 2000 Datacenter Server | 最大 64 GB |
| Windows Server 2003 Standard Edition | 最大 4 GB |
| Windows Server 2003 Enterprise Edition | 最大 32 GB |
| Windows Server 2003 Datacenter Edition | 最大 64 GB |
| 32 bit 版 SQL Server 2005 データベース エンジンでサポートされる物理メモリ |
| SQL Server 2005 Express Edition | 最大 1 GB |
| SQL Server 2005 Workgroup Edition | 最大 3 GB |
| SQL Server 2005 Standard Edition | OS がサポートする最大容量 |
SQL Server 2005 Enterprise Edition (Developer Edition、Evaluation Edition) | OS がサポートする最大容量 |
なお、SQL Server 2005 データベース エンジンでの「awe enabled オプション」のサポートは、32 bit 版 Windows 上で動作する SQL Server 2005 Standard Edition、Enterprise Edition (Developer Edition、Evaluation Edition) に限定されます。
Windows Server 2003 上の SQL Server 2005 では AWE メモリは動的に割り当てられるのに対し、Windows 2000 上の SQL Server 2005 では AWE メモリは静的な割り当てとなります。 AWE メモリの割り当てが静的である場合 (Windows 2000 の場合)、SQL Server 2005 データベース エンジン の「max server memory オプション」が非常に重要な設定項目となります。AWE メモリの割り当てが静的である場合の「max server memory オプション」の影響範囲については、以下の Web ページを参照してください。
SQL Server 2005 データベース エンジンの「max server memory オプション」と「min server memory オプション」
SQL Server 2005 データベース エンジン の「max server memory オプション」および「min server memory オプション」は SQL Server のサーバー構成オプションの中でも特に重要で、設定する頻度も多い設定項目です。 今回のテーマは「2 GB を超える物理メモリを SQL Server が使用できるようにするための設定」ですので、「max server memory オプション」が 2 GB を超えた適切な値に設定されていることのみが確認項目となります。
「max server memory オプション」および「min server memory オプション」の設定に関する詳細については、以下の Web ページを参照してください。
ページのトップへ
2 GB を超える物理メモリを SQL Server が使用していない原因
SQL Server 2005 データベース エンジン において 2 GB を超える物理メモリを SQL Server が使用していない原因は、大きく分けて以下の 3 つに整理できます。
(A) boot.ini の「/3GB スイッチ」または「/PAE スイッチ」の設定不足 物理メモリが 2 GB を超えているコンピュータにおいて、32 bit 版 Windows 上で SQL Server DB Engine が動作している場合、boot.ini ファイルへの「/3GB スイッチ」または「/PAE スイッチ」の設定の検討が必要です。 |
(B) SQL Server 2005 データベース エンジンの「awe enabled オプション」の設定不足 物理メモリが 2 GB (または 3 GB) を超えているコンピュータにおいて、32 bit 版 Windows 上で SQL Server DB Engine が動作している場合、SQL Server 2005 データベース エンジン の「awe enabled オプション」の設定の検討が必要です。 |
(C) SQL Server 2005 データベース エンジンの「max server memory オプション」の不適切な設定 (A) および (B) について適切な設定が行われていても、SQL Server 2005 データベース エンジン の「max server memory オプション」が 2 GB 以下に設定されている場合、SQL Server (の該当インスタンス) は 2 GB を超える物理メモリを使用しません。 |
上記以外に、同一 OS 上で動作する (別インスタンスを含む) 他のサービスの影響等の外部要因が考えられます。
ページのトップへ
2 GB を超える物理メモリを SQL Server が使用するための設定
以上から、「2 GB を超える物理メモリを SQL Server が使用するための設定」は、
(A) boot.ini における「/3GB スイッチ」の設定
(B) boot.ini における「/PAE スイッチ」の設定
(C) Windows ポリシーの「Lock Pages in Memory オプション (権限)」の設定
(D) SQL Server 2005 データベース エンジン の「awe enabled オプション」の設定
(E) SQL Server 2005 データベース エンジンの「max server memory オプション」と「min server memory オプション」の設定
の組み合わせとなります。
なお、(C) の「Lock Pages in Memory オプション (権限)」を設定している場合は (E) のうち「max server memory オプション」を指定しておくことが推奨されています。
設定例 1:
たとえば物理メモリが 4 GB で、「カーネル モード アドレス空間」に 1 GB、「ユーザー モード アドレス空間」に 3 GB の割り当てが適切であると判断される場合は (A) の「/3GB スイッチ」の設定を行います。
さらに、同一 OS 上で動作する他のサービスがある程度のメモリを消費することが判明している場合、(E) のうち「max server memory オプション」を 2.5 GB (例) に設定します。
設定例 2:
たとえば物理メモリが 32 GB あり、「カーネル モード アドレス空間」に 2 GB、「ユーザー モード アドレス空間」に 30 GB の割り当てが適切であると判断される場合は (B) の「/PAE スイッチ」と、(C) の「Lock Pages in Memory オプション (権限)」、(D) の「awe enabled オプション」の設定を行います。
さらに、同一コンピュータ上で同程度のメモリを消費する SQL Server DB Engine のインスタンスが 2 つ動作している場合 (E) のうち「min server memory オプション」をそれぞれ 5 GB、「max server memory オプション」をそれぞれ 20 GB に設定します。
(A) boot.ini ファイルにおける「/3GB スイッチ」の設定
boot.ini ファイルに「/3GB スイッチ」を記述して OS を再起動します。設定例は以下のとおりです。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard" /fastdetect /3GB
(B) boot.ini ファイルにおける「/PAE スイッチ」の設定
boot.ini ファイルに「/PAE スイッチ」を記述して OS を再起動します。
設定例は以下のとおりです。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE
(C) Windows ポリシーの「Lock Pages in Memory オプション (権限)」の設定
SQL Server 2005 データベース エンジン の「awe enabled オプション」を有効にするには、事前に SQL Server 2005 データベース エンジン のサービス実行アカウントに Windows ポリシーの「Lock Pages in Memory オプション (権限)」を割り当てておくことが必要になります。
このオプションは Windows グループ ポリシー ツール (gpedit.msc) で設定することができます。
.jpg)
画面 4: Windows グループ ポリシー ツール (gpedit.msc) での「Lock Pages in Memory オプション (権限)」の設定画面
拡大図を見る
「Lock Pages in Memory オプション」を割り当てる設定の手順については、以下の Web ページを参照してください。
(D) SQL Server 2005 データベース エンジンの「awe enabled オプション」の設定
「awe enabled オプション」を 1 (有効) に設定して 、SQL Server 2005 データベース エンジンのインスタンスを再起動します。
ただし、「awe enabled オプション」は拡張オプションであるため、事前に「show advanced options オプション」を 1 (有効) に設定しておく必要があります。
設定例は以下のとおりです。
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'awe enabled', 1
RECONFIGURE
GO
.jpg)
画面 5: SQL Server Management Studio での「awe enabled オプション」の設定画面
拡大図を見る
「awe enabled オプション」を SQL Server Management Studio の GUI で有効にする設定手順については、以下の Web ページを参照してください。
(E) SQL Server 2005 データベース エンジンの「max server memory オプション」の設定
「max server memory オプション」を適切な値に設定します。SQL Server 2005 データベース エンジンのインスタンスを再起動する必要はありません。 設定例は以下のとおりです (min server memory を 1 GB に、max server memory を 3 GB に設定しています)。
sp_configure 'min server memory', 1024
RECONFIGURE
GO
sp_configure 'max server memory', 3072
RECONFIGURE
GO
ページのトップへ
参考資料
ページのトップへ