メモリ アーキテクチャ

SQL Server では、メモリの確保と解放が必要に応じて動的に行われます。通常、管理者が SQL Server に割り当てるメモリ量を指定する必要はありませんが、このオプションは一部の環境で必要になるので存在しています。

SQL Server では AWE (Address Windowing Extensions) がサポートされているので、32 ビット版の Microsoft Windows オペレーティング システムで 4 GB を超える物理メモリを使用できます。最大 64 GB の物理メモリがサポートされます。MicrosoftWindows 2000 で実行する SQL Server のインスタンスでは AWE メモリの静的割り当てが使用されますが、MicrosoftWindows Server 2003 で実行するインスタンスでは AWE メモリの動的割り当てが使用されます。

注意

AWE のサポートは、SQL Server の Enterprise Edition、Standard Edition、および Developer Edition のみで使用でき、32 ビット オペレーティング システムにのみ適用されます。Analysis Services では、AWE でマップされたメモリを使用できません。使用可能な物理メモリがユーザー モード仮想アドレス空間よりも少ない場合、AWE を有効にすることはできません。

ディスクの読み書きはコンピュータ操作の中でも特にリソースを消費するので、どのようなデータベース ソフトウェアでも、ディスク I/O を最小限に抑えることを主な設計目標としています。SQL Server では、データベースから読み取ったページを保持するバッファ プールがメモリ内に構築されます。SQL Server のコードの大部分はディスクとバッファ プールの間の物理的な読み書きの回数が最も少なくなるように記述されています。SQL Server では次の 2 つの目標のバランスを取ることを目指しています。

  • システム全体のメモリ不足を防ぐため、バッファ プールが大きくなりすぎないようにする。

  • バッファ プールのサイズを最大にして、データベース ファイルの物理 I/O を最小限に抑える。

詳細については、「バッファ管理」を参照してください。

SQL Server 2005 の各エディションでは、既定でインスタンスごとにメモリが動的に管理されます。Windows 2000 とそれ以降のバージョンのオペレーティング システムでは、SQL Server による AWE マップ メモリの管理方法が異なります。

注意

負荷の高いシステムでは、実行に大量のメモリを必要とする大きなクエリが必要最低限のメモリ量を確保できず、メモリ リソースの待機中にタイムアウト エラーが発生することがあります。これを解決するには、query wait オプションの値を増やします。並列クエリの場合は、max degree of parallelism オプションの値を減らすことを検討してください。

注意

メモリ不足で負荷の高いシステムでは、クエリ プランにマージ結合、並べ替え、およびビットマップを使用したクエリが含まれていると、クエリがビットマップに必要な最低限のメモリ量を確保できなかった場合に、ビットマップが削除されることがあります。この動作がクエリのパフォーマンスに影響を与える場合があります。そのために並べ替え処理がメモリに収まらなくなったときに、tempdb データベース内の作業テーブルの使用率が増加し、tempdb データベースのサイズが大きくなります。この問題を解決するには、物理メモリを追加するか、より実行速度の速い別のクエリ プランを使用するようにクエリをチューニングします。チューニングの詳細については、「tempdb のパフォーマンスの最適化」および「データベースをチューニングする方法」を参照してください。

SQL Server に対する最大メモリ容量の指定

AWE および Locked Pages in Memory 特権を使用して、SQL Server データベース エンジンに次の容量のメモリを指定できます。

32 ビット

64 ビット

コンベンショナル メモリ

SQL Server のすべてのエディション : プロセス仮想アドレス空間制限まで :

  • 2 GB

  • 3 GB (/3gb のブート パラメータを使用する場合)1

  • 4 GB (WOW64 の場合)2

SQL Server のすべてのエディション : プロセス仮想アドレス空間制限まで :

  • 7 テラバイト (IA64 アーキテクチャの場合)

  • 8 テラバイト (x64 アーキテクチャの場合)

注意
Windows Server 2003 では 512 GB に制限されており、Windows Server 2003 Service Pack 1 では 1 TB に制限されています。Windows で追加のメモリがサポートされている場合、SQL Server は上記の制限に達することがあります。

AWE メカニズム (SQL Server で 32 ビット プラットフォームのプロセス仮想アドレス空間制限を超えることを許可する)

SQL Server Standard、Enterprise、および Developer エディション : バッファ プールは、最大 64 GB のメモリにアクセスできます。

適用なし3

Locked pages in memory OS 特権 (物理メモリのロックを許可し、ロックされたメモリの OS ページングを回避する)4

SQL Server Standard、Enterprise、および Developer エディション : AWE メカニズムを使用する SQL Server プロセスで必要です。AWE メカニズムによって割り当てられたメモリは、ページ アウトできません。

AWE を有効にせずにこの特権を許可しても、サーバーに対する影響はありません。

SQL Server Enterprise および Developer エディション : オペレーティング システムのページングを回避するために推奨されます。ワークロードによっては、パフォーマンス上の利点が得られる場合があります。アクセス可能なメモリ量は、コンベンショナル メモリの場合と似ています。

1**/3gb** は、オペレーティング システムのブート パラメータです。詳細については、MSDN ライブラリを参照してください。

2 WOW64 (Windows on Windows 64) は、32 ビットの SQL Server が 64 ビットのオペレーティング システムで実行される場合のモードです。詳細については、MSDN ライブラリを参照してください。

3sp_configureawe enabled オプションは、64 ビットの SQL Server に存在しますが、無視されます。このオプションは、64 ビットの SQL Server の将来のリリースまたはサービス パックで削除される場合があります。

4 locked pages in memory 特権が許可されている (AWE サポートの場合は 32 ビット、AWE そのものでは 64 ビットで) 場合は、サーバーの最大メモリも設定することをお勧めします。詳細については、「サーバー メモリ オプション」を参照してください。