index create memory オプション

SQL Server では、インデックス作成用として最初に割り当てられる最大メモリ容量を index create memory オプションで指定します。その後、インデックスを作成するためにより多くのメモリが必要になった場合、メモリ容量を確保できるのであれば、サーバーはそのメモリを使用します。したがって、使用メモリ容量がこのオプションの設定値を超えることになります。追加メモリを確保できない場合は、既に割り当てられているメモリを使用してインデックス作成が続行されます。

新しく、テーブルおよびインデックスのパーティション分割機能が追加された SQL Server 2005 では、パーティション インデックスが未整理であったり、並列処理の頻度が高かったりすると、インデックスの作成に必要な最小メモリ容量が大幅に増加します。SQL Server 2005 以降のバージョンでは、このオプションを使用して、1 回のインデックス作成操作ですべてのインデックス パーティションに最初に割り当てられる合計メモリ容量を指定できるようになっています。このオプションで指定したメモリ容量が、クエリの実行に必要となる最小メモリ容量より小さい場合は、クエリの実行が中止され、エラー メッセージが表示されます。

index create memory オプションは自動的に設定されるので、通常は調整する必要がありません。ただし、インデックスを正常に作成できない場合は、必要に応じて、このオプションの値を実行値より大きくしてください。

このオプションの既定値は 0 (自己構成) です。

このオプションの実行値は、SQL Server を実行しているオペレーティング システムおよびハードウェア プラットフォームで実際に確保できるメモリ容量を超えることはありません。32 ビット オペレーティング システムの場合、実行値は 3 GB より小さくなります。

注意

min memory per query オプションの設定は、index create memory オプションよりも優先順位が高くなります。これらのオプションは、SQL Server 2000 ではそれぞれ別個に機能しますが、SQL Server 2005 以降のバージョンでは互いに影響しあいます。両方のオプションを変更し、index create memory の設定値を min memory per query より小さくした場合は、警告メッセージが表示されます。ただし、値はそのまま設定されます。クエリ実行中にも同様の警告が表示されます。

index create memory は拡張設定オプションです。sp_configure システム ストアド プロシージャを使用して index create memory の設定を変更するには、show advanced options を 1 に設定する必要があります。新しい設定は、サーバーを再起動しなくてもすぐに有効になります。

index create memory オプションを 4096 に設定するには

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'index create memory', 4096
GO
RECONFIGURE;
GO

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'index create memory', 4096
GO
RECONFIGURE;
GO