範囲パーティション表スペースの作成

範囲パーティション (PBR) 表スペースを作成して、データ値の範囲に基づいてパーティションを作成し、各パーティション内でセグメント化されたスペース管理機能を使用することができます。

このタスクについて

パーティショニング・バイ・レンジ(PBR)テーブルスペースは、データ値の範囲に基づいてパーティショニングされたユニバーサル・テーブルスペース(UTS)です。 これは単一テーブルのデータページを保持し、各パーティション内で分割されたスペース管理機能を備えています。 PBRテーブルスペースでは、絶対ページ番号付けまたは相対ページ番号付けを使用できます。 絶対ページ番号は、パーティションサイズを最大限に柔軟に設定できます。

PBR 表スペースでは、パーティションは、特定のデータ列に対して定義されている境界値に基づいています。

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

ユーティリティーと SQL ステートメントは、各パーティションで並行して実行できます。 例えば、あるユーティリティー・ジョブは、他のアプリケーションが他のパーティション上のデータに同時にアクセスできるようにする一方で、データの一部を処理することができます。 この様にすると、例えば、いくつかの並行したユーティリティー・ジョブが表スペースのすべてのパーティションを並行してロードできます。 データの一部に対して作業できるために、そのデータに対する一部の操作に必要な時間が少なくて済むことがあります。 また、1 つの大きなジョブを使用する代わりに、一括更新、削除、または挿入操作に別々のジョブを使用できます。小さいジョブはそれぞれ異なるパーティションで動作します。 大きなジョブを、並行して実行するいくつかの小さなジョブに分割すると、タスク全体の経過時間を削減できます。

PBR スペース内の表に任意のタイプの索引を作成することができます。

PBR 表スペースは、相対ページ番号付け (RPN) または絶対ページ番号付けを使用できます。 相対ページ番号付けを持つ PBR スペースは、絶対ページ番号付けを持つ PBR 表スペースよりも大きなパーティション・サイズをサポートし、パーティションの拡張の柔軟性が向上します。 パーティションの増加を 2 GB の累乗単位で制限する代わりに、相対ページ番号を持つ PBR 表スペースは、パーティションの増加を任意のギガバイト数でサポートします。 また、個々のパーティションの DSSIZE を、REORGを必要とせずに、即時 ALTER として増やすこともできます。 CREATE TABLE または CREATE TABLESPACE 文の PAGENUM オプションは、 Db2 がテーブルスペースに使用するページ番号のタイプを指定します。 PAGENUM 文節を省略すると、Db2は PAGESET_PAGENUM サブシステム・パラメーターに指定された値を使用します。 PAGESET_PAGENUM のデフォルトは RELATIVE です。 ページ設定ページ番号フィールド(PAGESET_PAGENUMサブシステム・パラメータ )を参照してください。

ヒント : パーティショニングされた(非UTS)テーブルスペースの代替案として、相対ページ番号(RPN)付きパーティショニング・バイ・レンジ(PBR)テーブルスペースが推奨されています。パーティショニングされたテーブルスペースは非推奨です。

プロシージャー

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

  • CREATE TABLE ステートメントを発行し、PARTITION BY RANGE 文節を指定してください。
    以下の例では、暗黙的に作成された PBR 表スペース内にある ACCTNUM 列のデータ値の範囲に基づくパーティションを持つ表を作成します。
    CREATE TABLE TB01 (                     
       ACCT_NUM         INTEGER,            
       CUST_LAST_NM     CHAR(15),           
       LAST_ACTIVITY_DT VARCHAR(25),        
       COL2             CHAR(10),           
       COL3             CHAR(25),           
       COL4             CHAR(25),           
       COL5             CHAR(25),           
       COL6             CHAR(55),           
       STATE            CHAR(55))           
     IN DBB.TS01                            
                                            
      PARTITION BY RANGE (ACCT_NUM)               
       (PARTITION 1 ENDING AT (199),        
        PARTITION 2 ENDING AT (299),        
        PARTITION 3 ENDING AT (399),        
        PARTITION 4 ENDING AT (MAXVALUE));
  • NUMPARTS 節を指定し、MAXPARTITIONS 節を省略する CREATE TABLESPACE 文を発行します。
    次の例では、ストレージ・グループ DSN8G120 を使用して、データベース DSN8D12A に範囲パーティション表スペース TS1 を作成します。 この表スペースには、セグメントあたり 16 個のページがあり、また 55 のパーティションがあります。
    CREATE TABLESPACE TS1
         IN DSN8D12A
         USING STOGROUP DSN8G120
         NUMPARTS 55
         SEGSIZE 16
         LOCKSIZE ANY;   
  • 変更の開始PBRテーブルスペースで自然に適したパーティショニングスキームのないテーブルを作成する場合は、パーティショニングキーに暗黙的に隠されたROWID列を持つテーブルを作成することを検討してください。
    パーティショニングキーのROWID列は、パーティション全体にわたってデータを非常に均等に分散することを保証します。 暗黙的に隠されたROWID列も、アプリケーションからは透過的にすることができます。

    例えば、以下のCREATE TABLE文は、暗黙的に非表示のROWID列(ROW_ID)を基に、16のパーティションを持つ TB02 テーブルをPBRテーブルスペース内に作成します。

    CREATE TABLE TB02 ( 
       CLIENT VARGRAPHIC(3) NOT NULL,
       WI_ID VARGRAPHIC(12) NOT NULL,
       LENGTH SMALLINT, 
       DATA VARCHAR(1000),
       ROW_ID ROWID NOT NULL
       IMPLICITLY HIDDEN GENERATED ALWAYS)
                                           
      PARTITION BY (ROW_ID)
       (PARTITION 1 ENDING AT (X'0FFF'),
        PARTITION 2 ENDING AT (X'1FFF'),
        PARTITION 3 ENDING AT (X'2FFF'),
        PARTITION 4 ENDING AT (X'3FFF'),
        PARTITION 5 ENDING AT (X'4FFF'),
        PARTITION 6 ENDING AT (X'5FFF'),
        PARTITION 7 ENDING AT (X'6FFF'),
        PARTITION 8 ENDING AT (X'7FFF'),
        PARTITION 9 ENDING AT (X'8FFF'),
        PARTITION 10 ENDING AT (X'9FFF'),
        PARTITION 11 ENDING AT (X'AFFF'),
        PARTITION 12 ENDING AT (X'BFFF'),
        PARTITION 13 ENDING AT (X'CFFF'),
        PARTITION 14 ENDING AT (X'DFFF'),
        PARTITION 15 ENDING AT (X'EFFF'),
        PARTITION 16 ENDING AT (MAXVALUE))
     CCSID UNICODE;
    変更の終わり
  • 変更の開始「成長ベースのパーティショニングから範囲ベースのパーティショニングへのテーブルの変換」 で説明されているように、テーブルのパーティショニング方式を「パーティショニング・バイ・グロース」から「パーティショニング・バイ・レンジ」に変更します。変更の終わり