セグメント化 (非 UTS) 表スペース (非推奨)

セグメント化された表スペースは、複数の表、特に比較的小さな表を格納する場合に役立ちます。ページはセグメントを保持し、セグメントはそれぞれ、1 つの表のみのレコードを保持します。

推奨事項: セグメント化 (非 UTS) 表スペースは、推奨されません。 これらは Db2® 12 でサポートされていますが、これらのサポートは将来のリリースで除去される可能性があります。代わりにユニバーサル表スペースを使用してください。

セグメント化表スペースは最大 64 GB のデータを保持し、1 つ以上の VSAM データ・セットを含むことができます。以下のいずれかの条件が真である場合は、表スペースが一層大きくなる可能性があります。

  • 表スペースが、DSSIZE オプションを指定して作成したパーティション化表スペースである。
  • 表スペースが LOB 表スペースである。

表スペース・ページのサイズは、4 KB、8 KB、16 KB、または 32 KB のいずれかです。ページはセグメントを保持し、セグメントはそれぞれ、1 つの表のみのレコードを保持します。 各セグメントには同じページ数が含まれ、表はそれぞれ、その表が必要とするのと同数のセグメントだけを使用します。

1 つの表のすべての行を検索するためのステートメントを実行する場合、Db2 は表スペース全体をスキャンする必要はありません。表全体をスキャンしない代わりに、Db2 はその表を含む表スペースのセグメントのみをスキャンすればよいのです。 次の図に、セグメント化表スペース内の可能なセグメントの編成を示します。

図 1. セグメント化表スペース内の可能なセグメントの編成
図の説明の始め。
セグメント 1 には、表 A、セグメント 2 には表 B、セグメント 3 には表 C、セグメント 4 には表 A、セグメント 5 には表 B などが含まれます。図の説明の終わり。

INSERT ステートメント、MERGE ステートメント、または LOAD ユーティリティーを使用してレコードを表に挿入すると、同じ表のレコードが別のセグメントに格納されます。 同じ表のセグメントを一緒に移動するように表スペースを再編成することができます。

セグメント化 (非 UTS) 表スペースの定義

セグメント化 (非 UTS) 表スペースは、1 つの表のレコードを保持するセグメントから構成されます。

セグメント化 (非 UTS) 表スペースを定義するには、SEGSIZE 文節を指定した CREATE TABLESPACE ステートメントを使用します。この文節を使用する場合、指定する値は、各セグメント内のページ数を示します。値は 4 の倍数 (4 から 64) でなければなりません。選択する値は、格納する表のサイズによって異なります。次の表に、SEGSIZE の推奨事項を要約します。

表 1. SEGSIZE の推奨値
ページ数 SEGSIZE の推奨値
≤ 28 4 から 28 まで
> 28 < 128 ページ 32
≥ 128 ページ 64

CREATE TABLESPACE ステートメントのもう 1 つの文節は LOCKSIZE TABLE です。 この文節は、セグメント化表スペース内の表にのみ有効です。したがって、Db2 は、表スペース全体ではなく単一表のロックを取得できます。

セグメント化 (非 UTS) 表スペース内にフリー・スペースのページを残しておく場合は、各セグメントに少なくとも 1 つのフリー・ページが必要です。SEGSIZE 値未満の値の使用した FREEPAGE 文節を指定します。

例: SEGSIZE 20 を指定した FREEPAGE 30 を使用すると、Db2 は FREEPAGE の値を 19 と解釈するため、セグメントごとに 1 つのフリー・ページを取得できます。
制約事項: 宣言済み一時表で使用するためのセグメント化表 (非 UTS) スペースを作成する場合は、FREEPAGE 文節または LOCKSIZE 文節を指定できません。

セグメント化 (非 UTS) 表スペースの特性

セグメント化表スペースは以下の特性を共用します。

  • Db2 が 1 つの表のすべての行をスキャンする場合、スキャンする必要があるのはその表に割り当てられているセグメントのみです。Db2 は、表スペース全体をスキャンする必要はありません。空のセグメントのページを取り出す必要はありません。
  • Db2 が表をロックしても、そのロックが他の表のセグメントへのアクセスを妨げることはありません。
  • Db2 が表をドロップすると、そのセグメントは、REORG ユーティリティー・ジョブの介入を待たないで、ドロップがコミットされた直後に再使用できるようになります。
  • 表のすべての行が削除されると、最初のセグメントを除くすべてのセグメントが、削除がコミットされた直後に再使用できるようになります。REORG ユーティリティー・ジョブの介入は必要ありません。
  • 一括削除 とは、表のすべての行の削除であり、これにより個別削除よりも高速に操作され、作成されるログ情報は少なくなります。
  • 表スペースには 1 つの表しか含まれていない場合、それをセグメント化するということは、COPY ユーティリティーは空のページはコピーしないことを意味します。ページは、表のドロップまたは一括削除の結果として空の場合があります。
  • REPLACE オプションを指定した LOAD、RECOVER、COPY などの一部の Db2 ユーティリティーは、個々のセグメントではなく、表スペースまたはパーティションにのみ作動します。 したがって、セグメント化表スペースの場合は、表スペース全体に対してこのユーティリティーを実行する必要があります。大規模な表スペースの場合は、可用性の問題が発生することがあります。
  • スペース・マップの保守により、追加のオーバーヘッドが発生します。

複数の表を 1 つの表スペースに格納して、作成する表スペース数を少なくすると、並行してオープンできるデータ・セットの最大数に達することを回避するのに役立ちます。表スペースにはそれぞれ、少なくとも 1 つのデータ・セットが必要です。並行してオープンできるデータ・セットの最大数は、インストール時に決定されます。使用する表スペース数を少なくすると、データ・セットの割り振りおよび割り振り解除に費やす時間が減少します。