増加対応パーティション表スペースの作成

データの増加に基づいてDb2がパーティションを管理し、各パーティション内でセグメント化されたスペース管理機能を使用するように、増加対応パーティション表スペースを作成することができます。

このタスクについて

パーティショニング・バイ・グロース(PBG)テーブルスペースは、ユニバーサルテーブルスペース(UTS)にパーティショニングを施したもので、 Db2 がデータの増加に応じて自動的に管理します。 単一の表についてのみデータ・ページを保持し、各パーティション内にセグメント化されたスペース管理機能を持ちます。

Db2 データが増大するにつれ、PBGテーブルスペースを自動的に管理します。挿入操作を実行するためにさらにスペースが必要な場合は、自動的に新しいパーティションを追加します。

PBGテーブルスペースは、特にテーブルに適切なパーティショニングキーがない場合、小規模または中規模のテーブルに最適です。 使用されるバッファー・プールのページ・サイズ、および表スペースの作成時に指定された MAXPARTITIONS 値と DSSIZE 値に応じて、増加対応パーティション表スペースは最大 128 TB まで拡張できます。

PBGテーブルスペース内のテーブルに作成するインデックスは、非分割インデックスでなければなりません。 つまり、パーティショニングインデックス、パーティショニングインデックス、データパーティショニングセカンダリインデックス(DPSI)を含むパーティショニングインデックスは、PBGテーブルスペース内のテーブルではサポートされていません。 詳細は、「パーティショニングされたテーブルのインデックス 」を参照してください。

ヒント: PBGテーブルスペースは、小規模から中規模のテーブルに最適です。 テーブルが64GBよりもはるかに大きくなることが予想される場合は、パーティション・バイ・レンジ(PBR)テーブルスペースの使用を検討してください。
PBGテーブルスペース内のテーブルが大きくなりすぎると、以下のような問題を含め、いくつかの欠点が生じ始めます
  • 挿入および照会のパフォーマンス低下。これは、変換が必要であることを示す最も重要な要因である可能性があります。 このようなパフォーマンスの低下には多くの原因がありますが、PBG 表スペース内の大きな表の場合、表スペースのサイズが主な原因の 1 つであることがよくあります。
  • データのクラスタリングを再取得するのが難しい(テーブルスペース全体のREORGが必要)。
  • PBGテーブルスペース内のテーブルでは、パーティショニングされた(パーティショニングおよびDPSI)インデックスがサポートされていないため、非常に大きな非パーティショニングインデックスに関連する問題が発生します。 詳しくは、以下を参照してください
  • ユーティリティーのパーティション並列処理サポートの欠如。
  • パーティション・レベルのユーティリティー操作の制限付きサポート。

このような問題が発生した場合は、パーティション・バイ・レンジ(PBR)テーブルスペースの使用をご検討ください。 成長ベースのパーティショニングから範囲ベースのパーティショニングへの変換を参照してください。

ヒント: 自然に適したパーティショニングスキームのないテーブルにPBRテーブルスペースを使用するには、パーティショニングキーに暗黙的に隠されたROWID列を持つテーブルを作成することを検討してください。 パーティショニングキーのROWID列は、パーティション全体にわたってデータを非常に均等に分散することを保証します。また、暗黙的に隠されたROWID列は、アプリケーションに対して透過的であることも可能です。

パーティション化構造は、パーティション・レベルのユーティリティー操作と並列処理機能をサポートします。 PBGテーブルスペースは、各パーティション内で分割された組織と分割されたスペース管理機能も備えています。 セグメント化された構造により、スペース管理と一括削除機能が向上します。

ヒント: 非推奨の単一テーブルの Db2 管理セグメント化(非UTS)テーブルスペースの代替として、PBGテーブルスペースが推奨されています。

プロシージャー

増加対応パーティション表スペースを作成するには、以下のいずれかの方法を使用します。

  • CREATE TABLE ステートメントを発行し、PARTITION BY SIZE 文節を指定してください。
    Db2は、新しい表のために増加対応パーティション表スペースを暗黙的に作成します。
    以下の例では、データの増加に基づくパーティションを持つ表を作成します。データの増加は、暗黙的に作成された増加対応パーティション表スペースにあります。
      CREATE TABLE TS02TB
           (C1 SMALLINT,
            C2 DECIMAL(9,2),
            C3 CHAR(4))
         PARTITION BY SIZE EVERY 4G
         IN DATABASE DSNDB04;
  • CREATE TABLESPACE文を発行し、以下のMAXPARTITIONS句とNUMPARTS句の組み合わせのいずれかを指定します:
    • NUMPARTS を含まない MAXPARTITIONS を指定します。例:
      CREATE TABLESPACE TEST01TS IN TEST01DB USING STOGROUP SG1 
      DSSIZE 2G 
      MAXPARTITIONS 24 
      LOCKSIZE ANY 
      SEGSIZE 4; 
      COMMIT;
    • MAXPARTITIONS と NUMPARTS の両方を指定してください。
    • MAXPARTITIONSとNUMPARTSの両方を省略します。