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

FL 504 パーティションごとに範囲または成長テーブルスペースを作成できます。 基本表の場合、他のタイプの表スペースは推奨されないため、それらの表スペースはサポートされず、そのような既存の表のサポートは将来除去される可能性があります。 各タイプのより詳しい情報は、 Db2 for z/OS の表スペースの種類と特性をご覧ください。
ヒント : テーブル空間は作成後に変更することができますが、ALTER TABLESPACE with MAXPARTITIONS などの一部の文を適用すると、変更が完了するまでデータベースへのアクセスが禁止されます。 新しい表スペースを定義する際には、将来の拡張を検討してください。
プロシージャー
表スペースを明示的に作成するには、以下の手順で行います。
CREATE TABLESPACE ステートメントを発行し、作成する表スペースのタイプおよびその他の属性を指定します。
- 作成する表スペース・タイプを指定します。
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 |
注:
- ここで、n はゼロ以外の値です。 DPSEGSZ サブシステム・パラメーターは、デフォルト値を決定します。 詳細は、 DEFAULT PARTITION SEGSIZE フィールド(DPSEGSZ サブシステムパラメータ )を参照してください。
- FL 504 基本テーブル用の非UTSテーブル空間は非推奨です。 アプリケーション互換性レベル以上で実行されるCREATE TABLESPACE文は、 V12R1M504、常にパーティショニング・バイ・グロースまたはパーティショニング・バイ・レンジのテーブルスペースを作成します。また、非UTSテーブルスペース(既存のマルチテーブル・セグメント化テーブルスペースを含む)を指定するCREATE TABLE文はエラーを返します。 ただし、必要であれば、復旧時など、より低いアプリケーション互換性レベルを使用して、非推奨のタイプのテーブルスペースを作成することができます。 手順については、「UTS以外のテーブルスペースの作成(非推奨 )」を参照してください。
|

- 表スペースのその他の属性を指定します。
以下のリストは、表スペースの属性を定義するいくつかの 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 文節も指定すれば、
データが表スペース内の表に挿入またはロードされるまで、
データ・セットの割り振りを据え置くことができます。
