Db2表のデータのパーティション化

ユニバーサル表スペースで作成されるすべてのDb2基本表は、増加対応パーティションまたは範囲ごとのデータ区分化のいずれかを使用します。

始める前に

表用の表スペースとデータベースを作成するか、Db2に暗黙的に作成させるかを検討してください。

詳細については、「 Db2 テーブルスペースの実装 」を参照してください。

このタスクについて

データ・パーティションは、パフォーマンスを向上させるためのパーティション・レベルのユーティリティー操作と並列処理機能をサポートしているため便利で巣。

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

データの増加に基づいてサイズ・ベースの表パーティションをDb2に管理させることも、データ値の範囲に基づいてパーティションを指定することもできます。

サイズ・ベースのデータ・パーティション

サイズ・ベースのパーティションは、表内のデータが 64 GB を超えると予想される場合、または表に適切なパーティション・キーがない場合に最適です。 使用されるバッファー・プールのページ・サイズ、および表スペースの作成時に指定された MAXPARTITIONS 値と DSSIZE 値に応じて、増加対応パーティション表スペースは最大 128 TB まで拡張できます。

サイズ・ベースのパーティションを使用する場合、表は増加対応パーティション (PBG) 表スペース内にあります。 詳細については、「成長に合わせてパーティションを作成するテーブルスペース 」を参照してください。

範囲ベースのデータ・パーティション
データ値の範囲に基づいてパーティションを使用する場合、表は範囲内のパーティション (PBR) 表スペース内にあります。 詳細は、「範囲によるパーティション分割テーブルスペースの作成 」を参照してください。

表の作成時にデータをパーティション化する方法を指定しない場合、Db2はサイズ・ベースのパーティションを使用し、デフォルトでは増加対応パーティション表スペースを暗黙的に作成します。

ヒント:

非推奨の非 UTS 表スペースで既存の表を変換または置換する場合、使用するパーティション化のタイプは、既存の表スペース・タイプによって異なります。 詳細については、「非推奨のテーブル空間のUTSタイプへの変換 」を参照してください。

プロシージャー

汎用プログラミングインターフェース情報の開始。表内のデータをパーティション化する方法を制御するには、CREATE TABLE ステートメントで以下の方法を使用します。

  • PARTITION BY SIZE 節を指定して、データ・サイズに基づいてデータがパーティション化された表を作成します。
    IN 節で表スペースの名前を指定すると、既存の PBG 表スペースを識別する必要があります。 表スペース名を省略すると、Db2は表の PBG 表スペースを暗黙的に作成します。
    以下の例では、データの増加に基づくパーティションを持つ表を作成します。データの増加は、暗黙的に作成された増加対応パーティション表スペースにあります。
      CREATE TABLE TS02TB
           (C1 SMALLINT,
            C2 DECIMAL(9,2),
            C3 CHAR(4))
         PARTITION BY SIZE EVERY 4G
         IN DATABASE DSNDB04;
    PARTITION BY句を省略すると、サイズベースのパーティションを持つテーブルも作成されます。IN句でテーブルスペース名を指定する場合は、既存のPBGテーブルスペースを指定する必要があります。
  • パーティショニングキーを定義する1つ以上の列を特定するPARTITION BY RANGE句を指定し、 PARTITION part-num ENDING AT句でリミットキーの値を指定します。
    IN 節で表スペースの名前を指定すると、既存の PBR 表スペースを識別する必要があります。 表スペース名を省略すると、Db2は表の PBG 表スペースを暗黙的に作成します。
    以下の例では、暗黙的に作成された 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));
  • 変更の開始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;
    変更の終わり

次の作業

最終的には、データ・パーティションを追加または変更する必要があります。 詳細については、「パーティションの追加 」および 「パーティションの変更 」を参照してください。