DB2 10.5 for Linux, UNIX, and Windows

データベース管理スペース

DMS (データベース管理スペース) 表スペースでは、データベース・マネージャーがストレージ・スペースを制御します。 SMS 表スペースとは異なり、ストレージ・スペースは、DMS 表スペースを作成するときに指定したコンテナー定義に基づいて、ファイル・システムで事前割り振りされます。

重要: バージョン 10.1 フィックスパック 1以降、DMS 表スペース・タイプはユーザー定義の永続表スペースについて非推奨となっており、将来のリリースで除去される可能性があります。DMS 表スペース・タイプは、カタログ表スペースおよび TEMPORARY 表スペースについては非推奨になっていません。 詳しくは、DMS 永続表スペースが推奨されなくなったを参照してください。

DMS ストレージ・モデルは、スペースがデータベース・マネージャーにより管理される、限定された数のファイルまたはデバイスで構成されます。 コンテナーの作成時に、使用するファイルおよびデバイスをユーザーが決定し、それらのファイルおよびデバイスのスペースをユーザーが管理します。

ユーザー定義の表およびデータが入っている DMS 表スペースは、あらゆる表データまたは索引データを格納する LARGE 表スペース (デフォルト) または REGULAR 表スペースとして定義することができます。REGULAR 表スペースの最大サイズは 32 KB のページに対して 512 GB です。 LARGE 表スペースの最大サイズは、64 TB です。 これ以外のページ・サイズに対する REGULAR 表スペースの最大サイズについては、SQL および XML の制限値を参照してください。

DMS 表スペースを処理する際には、ファイルおよびロー・デバイスの、2 つのコンテナー・オプションがあります。 ファイル・コンテナーを処理する際、 データベース・マネージャーは、表スペースの作成時にコンテナー全体を割り当てます。 表スペース全体のこの初期割り当ての結果として、 物理的な割り当ては通常は連続していますが、 ファイル・システムがこの割り当てを実行しているとしても、連続するとは保証されません。 ロー・デバイス・コンテナーを処理する場合には、データベース・マネージャーがデバイス全体を制御し、常にエクステント のページを確実に連続配置できます。 (エクステント は、データベース・マネージャーが 1 つのコンテナーに書き込むページ数として定義されます。この数に達すると別のコンテナーが使用されます。)

DMS 表スペースの計画

DMS 表スペースおよびコンテナーを設計するときは、以下の要素を考慮してください。

  • データベース・マネージャーは、ストライピングを使用して、 すべてのコンテナーにわたって均等にデータを分散させるようにしています。これにより、データは表スペースのすべてのコンテナーに均一に書き込まれ、表のエクステントがすべてのコンテナーでラウンドロビン方式で配置されます。複数のコンテナーにデータを書き込む場合は、DB2® ストライピングが推奨されています。 DB2 ストライピングと共にディスク・ストライピングをインプリメントする場合は、表スペースのエクステント・サイズとディスクのストリップ・サイズは同一である必要があります。
  • SMS 表スペースとは異なり、DMS 表スペースを構成するコンテナーのサイズはすべて同じにする必要はありません。しかし、サイズが異なると、コンテナー間のストライピングが不均一になり、最適なパフォーマンスが得られるとは限らないため、通常は推奨されていません。 いずれかのコンテナーが満杯である場合、DMS 表スペースは、 他のコンテナーからの使用可能なフリー・スペースを使用します。
  • スペースは事前割り振りされるため、表スペースを作成する前に、 スペースが利用可能になっていなければなりません。 デバイス・コンテナーを使用する場合は、コンテナーを定義するのに十分なスペースのデバイスが存在していなければなりません。 それぞれのデバイスには、コンテナーを 1 つだけ定義することができます。 スペースを無駄にしないために、デバイスのサイズとコンテナーのサイズが等しくなるようにしてください。 例えば、そのデバイスに 5000 ページ分のストレージ容量があり、デバイス・コンテナーが 3000 ページと定義されると、デバイス上の 2000 ページ分は使用できなくなります。
  • デフォルトでは、コンテナーごとに 1 つのエクステントが追加の必須スペースのために予約されます。 フル・エクステントしか使用されないため、最適なスペース管理を実現するには、 コンテナーを割り振るときに以下の公式を使って適切なサイズを決定してください。
    • extent_size * (n + 1)
    extent_size は表スペース内の各エクステントのサイズ、 n はコンテナーに格納するエクステントの数を表します。
  • DMS 表スペースの最小サイズは、5 つのエクステントです。
    • 表スペース内のエクステント 3 つはオーバーヘッドのために確保されています。
    • いずれのユーザー表データを格納するにも、 最低で 2 つのエクステントが必要です。 (これらのエクステントは 1 つの表の正規データを格納するためのものです。 専用のエクステントを必要とする、索引、ロング・フィールド、 またはラージ・オブジェクト・データのためではありません。)

    5 つのエクステントよりも小さい表スペースを作成しようとすると、 エラー (SQL1422N) が生じます。

  • デバイス・コンテナーは、物理ボリュームではなく、「文字固有のインターフェース」を持つ論理ボリュームを使用しなければなりません。
  • DMS 表スペースでは、デバイスの代わりにファイルを使用することができます。 デフォルトの表スペース属性 (バージョン 9.5 では NO FILE SYSTEM CACHING) では、デバイスのセットアップをしないで済むという利点を持ちながら、デバイスに近い機能をファイルが実行できます。 詳しくは、ファイル・システム・キャッシングを使用しない表スペースを参照してください。
  • 実際のワークロードに LOB または LONG VARCHAR データが含まれる場合、ファイル・システムのキャッシュによってより高いパフォーマンスが得られる場合があります。
    注: LOB および LONG VARCHAR はデータベース・マネージャーのバッファー・プールには入れられません。
  • オペレーティング・システムによっては、 2 GB より大きいサイズの物理デバイスを持つことができるものがあります。 物理デバイスを複数の論理デバイスに分割して、 オペレーティング・システムによって許されるサイズより大きなコンテナーがないようにする必要があります。

DMS 表スペースを処理する場合には、 各コンテナーを異なるディスクに関連付けることを考慮しなければなりません。 これにより、 表スペースの容量は大きくなり、 並列入出力操作を利用する機能も改善されます。

CREATE TABLESPACE ステートメントは、データベースで新しい表スペースを作成し、 この表スペースにコンテナーを割り当て、カタログに表スペース定義と属性を記録します。 表スペースの作成時、エクステント・サイズは連続するページの数として定義されます。 エクステント内のページを使用できる表やオブジェクト (索引など) は、そのエクステントごとに 1 つだけです。 表スペースで作成されるすべてのオブジェクトには、 論理表スペース・アドレス・マップでエクステントが割り当てられます。 エクステントの割り当ては、スペース・マップ・ページにより管理されます。

論理表スペース・アドレス・マップの先頭のエクステントは、 表スペースのヘッダーで、これには内部制御情報が含まれます。 2 番目のエクステントは、表スペースのスペース・マップ・ページ (SMP) の最初のエクステントです。SMP エクステントは、表スペース全体に、等間隔で分散されます。 それぞれの SMP エクステントは、 現行の SMP エクステントから次の SMP エクステントへのエクステントのビットマップです。 このビットマップは、どの中間エクステントが使用中かをトラッキングするのに使用されます。

SMP に続くエクステントは、表スペースのオブジェクト表です。 オブジェクト表は、表スペースにどのユーザー・オブジェクトが存在するか、 またどこに最初のエクステント・マップ・ページ (EMP) エクステントが配置されているかをトラッキングする内部表です。 各オブジェクトには、それぞれ EMP があり、これは、 論理表スペース・アドレス・マップに保管されているオブジェクトの各ページへのマップを提供します。 図 1 は、論理表スペース・アドレス・マップでエクステントが割り当てられる方法を示しています。

図 1. 論理表スペース・アドレス・マップ
論理表スペース・アドレス・マップ内のエクステント