表スペースの明示的な作成

Db2 では、表スペースを作成できます。 ただし、独自のデータ・セットを管理する場合は、他の理由から CREATE TABLESPACE ステートメントを発行することによって、表スペースを明示的に作成することもできます。

始める前に

Db2 がテーブルスペースを作成する方法については、「暗黙的に定義されたテーブルスペース 」を参照してください。

このタスクについて

汎用プログラミングインターフェース情報の開始。

変更の開始FL 504 パーティションごとに範囲または成長テーブルスペースを作成できます。 基本表の場合、他のタイプの表スペースは推奨されないため、それらの表スペースはサポートされず、そのような既存の表のサポートは将来除去される可能性があります。 各タイプのより詳しい情報は、 Db2 for z/OS の表スペースの種類と特性をご覧ください。変更の終わり

ヒント : テーブル空間は作成後に変更することができますが、ALTER TABLESPACE with MAXPARTITIONS などの一部の文を適用すると、変更が完了するまでデータベースへのアクセスが禁止されます。 新しい表スペースを定義する際には、将来の拡張を検討してください。

プロシージャー

表スペースを明示的に作成するには、以下の手順で行います。

CREATE TABLESPACE ステートメントを発行し、作成する表スペースのタイプおよびその他の属性を指定します。
  1. 作成する表スペース・タイプを指定します。
    変更の開始FL 504 次の表は、結果として得られるテーブルスペースの種類を示しています。
    表 1. 表スペース・タイプを指定するための CREATE TABLESPACE 文節。アプリケーションの互換性レベルによって行います。
    表スペース・タイプ APPLCOMPAT( V12R1M504 )以降 APPLCOMPAT( V12R1M503 )およびそれ以下
    増加対応パーティション 以下のいずれかの組み合わせです。
    • MAXPARTITIONS および NUMPARTS
    • MAXPARTITIONS
    • 両方の省略
    以下のいずれかの組み合わせです。
    • MAXPARTITIONS および NUMPARTS
    • MAXPARTITIONS と SEGSIZE n 2.ai
    • MAXPARTITIONS
    範囲パーティション NUMPARTS のみ NUMPARTS と SEGSIZE n 2.ai
    セグメント化 (非 UTS) サポート対象外2.a.ii 以下の組み合わせのいずれかになります。
    • セグメントサイズ n 2.ai
    • MAXPARTITIONS、NUMPARTS、および SEGSIZE を省略します
    パーティション化 (非 UTS) サポート対象外2.a.ii NUMPARTS および SEGSIZE 0
    注:
    1. ここで、n はゼロ以外の値です。 DPSEGSZ サブシステム・パラメーターは、デフォルト値を決定します。 詳細は、 DEFAULT PARTITION SEGSIZE フィールド(DPSEGSZ サブシステムパラメータ )を参照してください。
    2. FL 504 基本テーブル用の非UTSテーブル空間は非推奨です。 アプリケーション互換性レベル以上で実行されるCREATE TABLESPACE文は、 V12R1M504、常にパーティショニング・バイ・グロースまたはパーティショニング・バイ・レンジのテーブルスペースを作成します。また、非UTSテーブルスペース(既存のマルチテーブル・セグメント化テーブルスペースを含む)を指定するCREATE TABLE文はエラーを返します。 ただし、必要であれば、復旧時など、より低いアプリケーション互換性レベルを使用して、非推奨のタイプのテーブルスペースを作成することができます。 手順については、「UTS以外のテーブルスペースの作成(非推奨 )」を参照してください。
    変更の終わり
  2. 表スペースのその他の属性を指定します。
    以下のリストは、表スペースの属性を定義するいくつかの CREATE TABLESPACE ステートメント文節を示しています。 完全なリストについては、「CREATE TABLESPACE ステートメント」 を参照してください。
    table-space-name
    表スペース名は、最大 8 文字の ID です。 データベース名を指定して表スペース名を修飾することができます。 表スペースの命名指針に関する次の要素を考慮してください。
    • データベース名を指定して明示的な表スペースを修飾しない場合、そのデフォルト・データベース名は DSNDB04 になります。
    • 表スペースを明示的に指定しない場合は、Db2は暗黙的に派生した名前を持つ表スペースを作成します。 この名前は、作成される表の名前に基づいて派生します。
    • Db2は、暗黙的に表スペース用に新規データベースを作成するか、または既存の暗黙的に作成されたデータベースを使用します。
    バッファプール bpname
    この表スペースが使用するバッファー・プールを指定し、表スペース のページ・サイズを決定します。 バッファー・プールは、Db2がデータを一時的に保管して取得するメモリーの一部です。 詳細は、「データベースバッファプールのチューニング 」を参照してください。
    変更の開始PAGENUM変更の終わり
    変更の開始
    範囲パーティション (PBR) 表スペースに使用されるページ番号付けのタイプを指定します。 相対ページ番号付け(RPN)を備えたPBRテーブルスペースは、絶対ページ番号付けを備えたPBRテーブルスペースよりも大きなパーティションサイズをサポートし、パーティションの拡張においてより高い柔軟性を提供します。 パーティションの増加を 2 GB の累乗単位で制限する代わりに、相対ページ番号を持つ PBR 表スペースは、パーティションの増加を任意のギガバイト数でサポートします。 また、個々のパーティションの DSSIZE を、REORGを必要とせずに、即時 ALTER として増やすこともできます。
    ヒント: 最適な結果を得るには、PBRテーブルスペースには相対ページ番号付け(RPN)を使用してください。 RPNはより大きなパーティションとパーティション拡張の柔軟性を可能にします。 PBRテーブルスペースでは絶対ページ番号付けは非推奨です。

    PAGESET_PAGENUM サブシステム・パラメーターは、デフォルト値を指定します。 ページ設定ページ番号フィールド(PAGESET_PAGENUMサブシステム・パラメータ )を参照してください。

    変更の終わり
    MAXPARTITIONS
    増加対応パーティション表スペースの最大パーティション数を示します。 この節の中で NUMPARTS 節を指定し、初回に作成するパーティションの数を指定できます。
    NUMPARTS
    テーブルスペースに最初に作成するパーティションの数を指定します。
    COMPRESS
    データを圧縮するかどうかを指定します。 表スペース内のデータを圧縮すると、より多くのデータを各データ・ページに保管できるようになります。 詳細は、「データの圧縮」 を参照してください。
    FREEPAGE 整数
    Db2が、表スペースまたはパーティションがロードまたは再編成されたときに、フリー・スペースのページを残す頻度を指定します。 Db2は、整数ページ数ごとに 1 ページ分のフリー・ページを確保することを指定します。 フリー・ページを使用すると、大量の挿入を行うアプリケーション、または可変長列を更新するアプリケーションに対してパフォーマンスを向上させることができます。 詳細は、「テーブルスペースの空き領域の確保 」を参照してください。
    PCTFREE整数
    表がロードまたは再編成されるときに、Db2がフリー・スペースとして残す各ページのパーセンテージを指定します。 PCTFREE を指定すると、大量の挿入を行うアプリケーションや可変長列を更新するアプリケーションのパフォーマンスを向上させることができます。 詳細は、「テーブルスペースの空き領域の確保 」を参照してください。
    LOCKSIZE
    Db2 がテーブルスペース内で使用するロックのサイズを指定します。 Db2 データの整合性を保護するためにロックを使用します。 ロックを使用すると、多少の処理コストがかかるので、ロック・サイズの選択は慎重に行ってください。 詳細は、「テーブルスペースのロックサイズの指定 」を参照してください。
    MAXROWS
    各データ・ページにDb2が配置する行の最大数を指定します。 整数の範囲は 1 から 255 です。 MAXROWS を指定しない場合、デフォルトの行数は 255 です。 LOB 表スペース、または作業ファイル・データベース内の表スペースには、MAXROWS を使用しないでください。
    MEMBER CLUSTER
    INSERT 操作により挿入されたデータが、暗黙的なクラスター索引 (最初の索引) または明示的なクラスター索引でクラスター化されないことを指定します。 Db2 利用可能なスペースに基づいて、テーブルスペース内のデータを配置します。 範囲パーティション表スペースおよび増加対応パーティションの表スペースには、MEMBER CLUSTER キーワードを使用できます。 詳細は、 メンバー親和性クラスタリングを参照してください。
    DSSIZE
    各パーティションの最大サイズ (GB 単位) を指定します。 テーブル空間のサイズは、テーブル空間にいくつパーティションがあるか、および各パーティションのサイズによって決まります。 成長によるパーティショニングのテーブルスペースの場合、パーティションの最大数は、MAXPARTITIONS句で指定された値によって決まります。
    変更の開始SEGSIZE変更の終わり
    変更の開始FL 504 整数値は、テーブルスペースの各セグメントに割り当てるページ数を指定します。 整数は、4から64(両端を含む)までの4の倍数でなければなりません。 LOB 表スペースに対しては SEGSIZE を指定しないでください。

    SEGSIZE が指定されていない場合、SEGSIZE の値は次のように決定されます。

    • DPSEGSZ サブシステム・パラメーター値が 0 より大きい場合、表スペースの SEGSIZE 値は DPSEGSZ の値と等しくなります。
    • DPSEGSZ 値が 0 の場合、表スペースの SEGSIZE は 32 です。
    • 表スペースが作業ファイル・データベース内に作成される場合、DPSEGSZ 値は適用されず、表スペースの SEGSIZE 値は 16 になります。
    変更の終わり

以下の例は、SQL ステートメントを使用して、さまざまなタイプの表スペースを作成する方法を示しています。

増加対応パーティション表スペースの作成
以下の CREATE TABLE ステートメントは、増加対応パーティション表スペースによって暗黙的に作成されます。
CREATE TABLE TEST02TB( 
C1 SMALLINT, 
C2 DECIMAL(9,2), 
C3 CHAR(4)) 
PARTITION BY SIZE EVERY 4G 
IN TEST02DB; 
COMMIT;

以下の SQL ステートメントは、増加対応パーティション表スペースを作成します。この表スペースには、パーティションごとに最大 2 GB、セグメントごとに 4 ページ、表スペースに最大 24 個のパーティションがあります。

CREATE TABLESPACE TEST01TS IN TEST01DB USING STOGROUP SG1 
DSSIZE 2G 
MAXPARTITIONS 24 
LOCKSIZE ANY 
SEGSIZE 4; 
COMMIT;
変更の開始相対ページ番号付けを使用した範囲パーティション表スペースの作成変更の終わり
変更の開始

次の SQL ステートメントの例では、相対ページ番号付けを使用した範囲内パーティション表スペースが作成されます。 パーティション・サイズの最大サイズについては、パーティション 1 の場合は 64G、その他の 7 つのパーティションの場合は 4G です。

CREATE TABLESPACE TS1 
  IN DB1
  USING STOGROUP SG1
    NUMPARTS 7 
     (PARTITION 1 DSSIZE 64G
     )
PAGENUM RELATIVE;
変更の終わり
範囲パーティション表スペースの作成
次の SQL ステートメントの例では、セグメントごとに16 ページで、および 55 個のパーティションのある範囲パーティション表スペースを定義しています。 このユニバーサル表スペースは、ストレージ・グループ SG1 を使用し、LOCKSIZE ANY を指定しています。
CREATE TABLESPACE TS1 IN DB1 USING STOGROUP SG1
NUMPARTS 55 SEGSIZE 16
LOCKSIZE ANY;
次の SQL ステートメントの例では、セグメントごとに 64 ページで、および7つの延期定義パーティションのある範囲パーティション表スペースを定義します。 この表スペースでは、ストレージ・グループ SG1 を使用し、すべての奇数番号のパーティションを圧縮します。
CREATE TABLESPACE TS1 IN DB1 USING STOGROUP SG1
NUMPARTS 7
(
PARTITION 1 COMPRESS YES,
PARTITION 3 COMPRESS YES,
PARTITION 5 COMPRESS YES,
PARTITION 7 COMPRESS YES
)
SEGSIZE 64
DEFINE NO;

次の作業

一般的に、USING STOGROUP 文節を指定した CREATE TABLESPACE ステートメントを使用すると、Db2は表スペースにデータ・セットを割り振ります。 しかし、DEFINE NO 文節も指定すれば、 データが表スペース内の表に挿入またはロードされるまで、 データ・セットの割り振りを据え置くことができます。

汎用プログラミングインターフェース情報の終了。