CREATE TABLESPACE ステートメント
CREATE TABLESPACE ステートメントは、データベースに新しい表スペースを定義し、 その表スペースにコンテナーを割り当て、その表スペース定義と属性をカタログに記録します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、あるいは対話式に発行することができます。 これは、DYNAMICRULES の実行動作がパッケージに効力を持つ場合にのみ、動的に準備できる実行可能ステートメントです (SQLSTATE 42509)。
許可
このステートメントの許可 ID が持つ特権には、SYSCTRL または SYSADM 権限が含まれている必要があります。
構文
説明
- LARGE、REGULAR、SYSTEM TEMPORARY、USER TEMPORARY
- 作成する表スペースのタイプを指定します。 タイプを指定しない場合は、MANAGED BY 節によってデフォルトが決定されます。
- LARGE
- すべての永続データを保管します。 このタイプは、データベース管理スペース (DMS) 表スペースでのみ使用できます。 また、タイプを指定しない場合の、DMS 表スペースのデフォルト・タイプでもあります。 LARGE 表スペースに表を配置すると、以下のようになります。
- REGULAR 表スペースに配置する表よりもサイズを大きくできます。 表および表スペースの制限について詳しくは、 SQL および XML の制限を参照してください。
- 表のデータ・ページ当たり、255 を超える行数をサポートできるので、データ・ページのスペース使用効率が向上します。
- 表に定義する索引には、REGULAR 表スペースに配置する表に定義する索引と比べて、索引 1 行あたり 2 バイトが追加で必要になります。
- REGULAR
- すべての永続データを保管します。 このタイプは、DMS 表スペースと SMS 表スペースの両方に該当します。 SMS 表スペースでは、これが唯一認められているタイプであり、タイプを指定しない場合の、SMS 表スペースのデフォルト・タイプでもあります。
- SYSTEM TEMPORARY
- 一時表 (データベース・マネージャーがソートや結合などの操作を実行するのに使用する作業域) を保管します。 データベースには、常に少なくとも 1 つの SYSTEM TEMPORARY 表スペースが必要です。一時表はこの種の表スペースにのみ保管することができるからです。 TEMPORARY 表スペースはデータベースの作成時に自動的に作成されます。
- USER TEMPORARY
- 作成済み一時表および宣言済み一時表を保管します。 データベースの作成時に USER TEMPORARY 表スペースは存在しません。 作成済み一時表または 宣言済み一時表を定義できるようにするには、適切な USE 特権を設定した USER TEMPORARY 表スペースを少なくとも 1 つ作成する必要があります。
tablespace-name - 表スペースの名前を指定します。 これは、1 部構成の名前です。 これは、SQL ID です (通常 ID または区切り ID)。 tablespace-name (表スペース名) は、 既にカタログに存在している表スペースを指定するものであってはなりません (SQLSTATE 42710)。 tablespace-name を文字 SYS で始めることはできません (SQLSTATE 42939)。
- IN DATABASE PARTITION GROUP db-partition-group-name (データベース・パーティション・グループ名)
- 表スペースのデータベース・パーティション・グループを指定します。 該当のデータベース・パーティション・グループは存在していなければなりません。 SYSTEM TEMPORARY 表スペースの作成の際に指定できるデータベース・パーティション・グループは、IBMTEMPGROUP だけです。 DATABASE PARTITION GROUP キーワードはオプションです。
データベース・パーティション・グループを指定しないと、 デフォルトのデータベース・パーティション・グループ (IBMDEFAULTGROUP) が、 REGULAR、LARGE、および USER TEMPORARY 表スペースに使用されます。 SYSTEM TEMPORARY 表スペースには、 デフォルト・データベース・パーティション・グループ IBMTEMPGROUP が使われます。
- PAGESIZE 整数 [K]
- 表スペースに使用するページのサイズを定義します。 接尾部 K を指定しない integer として有効な値は、4096、8192、16384、または 32768 です。 接尾部 K を持つ integer の有効値は、4、8、16、または 32 です。 integer と K の間には、任意の数のスペースを使用できます (スペースなしでも可)。 ページ・サイズがこれらのいずれの値にも該当しない場合 (SQLSTATE 428DE)、
あるいはページ・サイズが表スペースと関連付けられたバッファー・プールのページ・サイズと
同じではない場合 (SQLSTATE 428CB) には、エラーが起こります。
デフォルト値は pagesize データベース構成パラメーターによって指定されます。これは、データベースの作成時に設定されます。
- MANAGED BY AUTOMATIC STORAGE
- 表スペースが自動ストレージ表スペースになることを指定します。 ストレージ・グループが定義されていないと、エラーが返されます (SQLSTATE 55060)。
自動ストレージ表スペースを最初にどのように作成するかは、データベース・マネージャーによって決定されます。 TEMPORARY 表スペースはシステム管理スペース (SMS) 表スペースとして初期化され、永続表スペースはデータベース管理スペース (DMS) 表スペースとして初期化されます。 永続表スペースを作成する場合、表スペースのタイプを指定しないと、デフォルト動作として LARGE 表スペースが作成されます。 自動ストレージ表スペースを使用すると、データベース・マネージャーは、表スペースが使用するストレージ・グループに関連付けられたストレージ・パスに基づいて、表スペースに割り当てられるコンテナーを判別します。
- storage-group
- 自動ストレージ表スペースのストレージ・グループを指定します。
- USING STOGROUP
- 自動ストレージ表スペースでは、表スペースのデータが格納される表スペースのストレージ・グループを指定します。 storagegroup-name を指定しない場合、現在指定されているデフォルトのストレージ・グループが使用されます。 この節が適用されるのは、自動ストレージ表スペースに対してのみです (SQLSTATE 42613)。 ストレージ・グループ名
- 表スペース・データが格納されるストレージ・グループを指定します。 storagegroup-name には、現行のサーバー上の既存のストレージ・グループを指定する必要があります (SQLSTATE 42704)。 これは、1 部構成の名前です。
- size-attributes
- 自動ストレージ表スペース、または自動ストレージ表スペースでない DMS 表スペースの、サイズ属性を指定します。 SMS 表スペースは自動サイズ変更可能ではありません。
- AUTORESIZE
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能が有効かどうかを指定します。 自動サイズ変更可能表スペースは、いっぱいになると、サイズを自動的に大きくします。 デフォルトは、DMS 表スペースの場合は NO、自動ストレージ表スペースの場合は YES です。
- いいえ
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能が無効であることを指定します。
- はい
- DMS 表スペースまたは自動ストレージ表スペースの自動サイズ変更機能が有効であることを指定します。
- INITIALSIZE 整数 K | M | G
- 自動ストレージ表スペースの初期サイズをデータベース・パーティションごとに指定します。 このオプションは、自動ストレージ表スペースに対してのみ有効です。 整数値の後に K (キロバイト)、M (メガバイト)、または G (ギガバイト) を指定する必要があります。 使用される実際の値は、指定した値より多少小さい場合があります。これは、データベース・マネージャーが表スペース内のコンテナー間でサイズを統一しようとするためです。 また、自動サイズ変更が可能な表スペースでは、初期サイズが小さくて、新しい表スペースに追加しなければならないメタデータを入れることができない場合は、データベース・マネージャーが、十分なスペースになるまで INCREASESIZE の値ずつ表スペースの拡張を続けます。 INITIALSIZE 節が指定されていない場合、データベース・マネージャーが適切な値を判別します。 integer の値は、少なくとも 48 K でなければなりません。
- INCREASESIZE integer PERCENT または INCREASESIZE integer K | M | G
- 自動サイズ変更が有効な表スペースで、表スペースがいっぱいでスペース要求が出された場合に表スペース・サイズが自動変更されるときのサイズ増加単位 (データベース・パーティションごと) を指定します。 整数値の後に以下のものを指定しなければなりません。
- PERCENT。スペースの要求がなされた時点の表スペース・サイズのパーセンテージとして量を指定します。 PERCENT を指定する場合、整数値は 0 と 100 の間でなければなりません (SQLSTATE 42615)。
- K (K バイト)、M (M バイト)、または G (G バイト)。バイト単位で量を指定します。
- MAXSIZE integer K | M | G または MAXSIZE NONE
- 自動サイズ変更が有効な表スペースで、自動的に増加可能な最大サイズを指定します。 表スペースが自動サイズ変更可能であっても、MAXSIZE 節が指定されていない場合、デフォルトは NONE です。
- 整数
- DMS 表スペースまたは自動ストレージ表スペースが自動的に増加できるサイズのハード・リミットを、データベース・パーティションごとに指定します。 整数値の後に K (キロバイト)、M (メガバイト)、または G (ギガバイト) を指定する必要があります。 使用される実際の値は、指定した値より多少小さい場合があります。これは、データベース・マネージャーが表スペース内のコンテナー間で増加量を統一しようとするためです。
- NONE
- 表スペースをファイル・システムの容量まで、または表スペースの最大サイズ (
SQL と XML の制限
で解説) まで増大できるようにすることを指定します。
- MANAGED BY SYSTEM
- 表スペースが SMS 表スペースになることを指定します。
MANAGED BY SYSTEM は、 Db2® pureScale® 環境では指定できません (SQLSTATE 42997)。
重要: SMS 表スペース・タイプは、ユーザー定義の永続表スペースに対して非推奨になっており、将来のリリースで除去される可能性があります。 SMS 表スペース・タイプは、カタログ表スペースおよび TEMPORARY 表スペースについては非推奨になっていません。 詳しくは、 SMS 永続表スペースの非推奨を参照してください。 - system-containers
- SMS 表スペースに対するコンテナーを指定します。
- USING container-string, )
- SMS 表スペースに関して、表スペースに属し、表スペース・データの保管先となる、
1 つ以上のコンテナーを識別します。 container-string の長さは、240 バイトを超えてはなりません。
各 container-string は、絶対ディレクトリー名または相対ディレクトリー名にすることができます。
絶対ディレクトリー名でない場合、ディレクトリー名はデータベース・ディレクトリーからの相対ディレクトリー名であり、データベース・ディレクトリーに物理的に関連付けられていないストレージのパス名別名 (またはシンボリック・リンク) にすることができます。 例えば、dbdir/work/c1は、他のファイル・システムへのシンボリック・リンクである場合があります。
ディレクトリー名のコンポーネントで存在しないものがあれば、データベース・マネージャーによって作成されます。 表スペースがドロップされると、データベース・マネージャーによって作成されたすべてのコンポーネントが削除されます。 container-string で識別されるディレクトリーが存在する場合、それにファイルまたはサブディレクトリーを含めてはなりません (SQLSTATE 428B2)。
container-string の形式は、オペレーティング・システムによって異なります。
オペレーティング・システム 絶対パス名の形式 Linux®
AIX®絶対パス名はスラッシュ (/) で始まります Windows 絶対ディレクトリー・パス名は、ドライブ名とコロン (:) で始まります 相対パス名はどのプラットフォームでも、オペレーティング・システムに依存する文字では始まりません。
NAS や CIFS などのファイル・レベル・プロトコルについては、以下のテクノロジーが使用される場合のみ、リモート・リソース (LAN リダイレクト・ドライブや NFS マウント・ファイル・システムなど) が現在サポートされています。- Network Appliance Filers
- IBM® Network Attached Storage
- NEC iStorage S2100、S2200、または S4100
- Windows 上のデータベース・サーバーを使用する NEC Storage NS Series注: NEC ストレージ NS シリーズは、無停電電源装置 (UPS) を使用する場合にのみサポートされます。(スタンバイではなく) 連続 UPS が推奨されます。
AIX 上の NFSマウント・ファイル・システムは、 -o nointr オプションを使用して、無割り込みモードでマウントする必要があります。
iSCSI や FCP などのブロック・レベル・プロトコルは、不揮発性 RAM またはバッテリー・バックアップを備えたバックエンド・ストレージによってサポートされます。 正常完了した書き込みが停電などの障害時に失われないことを、ストレージ・テクノロジーが保証する必要があります。
on-db-partitions-clause - パーティション・データベースにおいて、コンテナーを作成するデータベース・パーティションを指定します。 この節を指定しない場合、他のどの on-db-partitions-clauses にも明示的に指定されていないデータベース・パーティション・グループ内のデータベース・パーティションでコンテナーが作成されます。 データベース・パーティション・グループ IBMTEMPGROUP に定義されている SYSTEM TEMPORARY 表スペースでは、 on-db-partitions-clause が指定されていない場合、データベースに追加されるすべての新規データベース・パーティションにコンテナーも作成されます。
- MANAGED BY DATABASE
- 表スペースが DMS 表スペースになることを指定します。 表スペースのタイプが指定されていない場合、デフォルトの動作として LARGE 表スペースを作成します。
MANAGED BY DATABASE は、 Db2 pureScale 環境 では指定できません (SQLSTATE 42997)。
重要: DMS 表スペース・タイプは、ユーザー定義の永続表スペースでは非推奨になっており、将来のリリースで除去される可能性があります。 DMS 表スペース・タイプは、カタログ表スペースおよび TEMPORARY 表スペースについては非推奨になっていません。 詳しくは、 DMS 永続表スペースの非推奨を参照してください。 - database-containers
- DMS 表スペースに対するコンテナーを指定します。
- USING
- container-clause を導きます。 container-clause
- DMS 表スペースに対するコンテナーを指定します。
- (FILE | DEVICE container-string ' number-of-pages、 .)
- DMS 表スペースの場合、表スペースに属し、表スペース・データの保管先となる、
1 つ以上のコンテナーを識別します。 コンテナーのタイプ (FILE または DEVICE) およびそのサイズ (PAGESIZE ページ単位) を指定します。 またサイズは、整数値の後に K (キロバイト)、M (メガバイト)、または G (ギガバイト) を付けて指定することもできます。 このように指定した場合、バイト数をページ・サイズで割った値を下限に丸めたものを使用してコンテナーのページ数が決定されます。 FILE コンテナーおよび DEVICE コンテナーを混合して指定することも可能です。 container-string の長さは、254 バイトを超えてはなりません。
FILE コンテナーの場合、container-string は、 絶対ファイル名または相対ファイル名でなければなりません。 ファイル名が絶対ファイル名でない場合、データベース・ディレクトリーに対して相対的です。 ディレクトリー名のコンポーネントで存在しないものがあれば、データベース・マネージャーによって作成されます。 ファイルが存在しない場合は作成され、データベース・マネージャーによって指定されたサイズに初期設定されます。 表スペースがドロップされると、データベース・マネージャーによって作成されたすべてのコンポーネントが削除されます。
注: ファイルが存在する場合は上書きされ、指定されたサイズより小さい場合は拡張されます。 ファイルが指定されたサイズより大きい場合には切り捨てられません。DEVICE コンテナーの場合、container-string は装置名でなければなりません。 また、装置が既に存在していなければなりません。
重要: DEVICE コンテナー節は非推奨になっており、将来のリリースで削除される可能性があります。 REDIRECT オプションを指定したオフライン RESTORE DATABASE 操作を使用して、DEVICE コンテナーから AUTOMATIC STORAGE コンテナーにマイグレーションできます。すべてのコンテナーはすべてのデータベース間で固有でなければなりません。 コンテナーは 1 つの表スペースにのみ属することができます。 コンテナーのサイズは異なることがあります。しかし、すべてのコンテナーが同じサイズの場合に最適のパフォーマンスが実現します。 container-string の正しい形式は、オペレーティング・システムによって異なります。
NAS や CIFS などのファイル・レベル・プロトコルについては、以下のテクノロジーが使用される場合のみ、リモート・リソース (LAN リダイレクト・ドライブや NFS マウント・ファイル・システムなど) が現在サポートされています。- Network Appliance Filers
- IBM Network Attached Storage
- NEC iStorage S2100、S2200、または S4100
- Windows 上のデータベース・サーバーを使用する NEC Storage NS Series注: NEC ストレージ NS シリーズは、無停電電源装置 (UPS) を使用する場合にのみサポートされます。(スタンバイではなく) 連続 UPS が推奨されます。
iSCSI や FCP などのブロック・レベル・プロトコルは、不揮発性 RAM またはバッテリー・バックアップを備えたバックエンド・ストレージによってサポートされます。 正常完了した書き込みが停電などの障害時に失われないことを、ストレージ・テクノロジーが保証する必要があります。
on-db-partitions-clause - パーティション・データベースにおいて、コンテナーを作成するデータベース・パーティションを指定します。 この節を指定しない場合、 他のどの on-db-partitions-clause にも明示的に指定されていないデータベース・パーティション・グループ内のデータベース・パーティションでコンテナーが作成されます。 データベース・パーティション・グループ IBMTEMPGROUP に定義されている SYSTEM TEMPORARY 表スペースでは、 on-db-partitions-clause が指定されていない場合、データベースに追加されるすべての新規データベース・パーティションにコンテナーも作成されます。
- on-db-partitions-clause
- パーティション・データベースにおいて、コンテナーを作成するデータベース・パーティションを指定します。
- ON DBPARTITIONNUMS
- 個々のデータベース・パーティションを指定することを示すキーワードです。 DBPARTITIONNUM は DBPARTITIONNUMS の同義語です。
- db-partition-number1
- データベース・パーティション番号を指定します。
- TO db-partition-number2
- データベース・パーティション番号の範囲を指定します。 db-partition-number2 の値は、 db-partition-number1 の値以上でなければなりません (SQLSTATE 428A9)。 コンテナーは、指定する値の範囲内にある (その値も含む) 各データベース・パーティションで作成されます。 指定するデータベース・パーティションは、表スペースのデータベース・パーティション・グループに含まれているものでなければなりません。
番号によって指定するデータベース・パーティションと、データベース・パーティションの範囲によって指定するすべてのデータベース・パーティションは、表スペースのデータベース・パーティション・グループに含まれているものでなければなりません (SQLSTATE 42729)。 データベース・パーティション番号を明示的に、または範囲として指定できるのは、このステートメントのただ 1 つの on-db-partitions-clause の中だけです (SQLSTATE 42613)。
- EXTENTSIZE ページ数 (number-of-pages)
- 次のコンテナーに移る前にコンテナーに書き込まれる PAGESIZE ページの数を指定します。 またエクステント・サイズの値は、整数値の後に K (キロバイト) または M (メガバイト) を付けて指定することもできます。 このように指定した場合、バイト数をページ・サイズで割った値を下限に丸めたものを使用してエクステント・サイズの値が決定されます。 データベース・マネージャーは、データが保管されると、コンテナーについてこの処理を繰り返し実行します。
Db2 pureScale 環境では、少なくとも 32 ページのエクステント・サイズを使用する必要があります。 この最小エクステント・サイズにより、表または索引のエクステントが追加されるときの Db2 pureScale 環境 内の内部メッセージ・トラフィック量が削減されます。
デフォルト値は、2-256 ページの有効な範囲を持つdft_extent_szデータベース構成パラメーターに提供されます。
- PREFETCHSIZE
- 照会が入出力の実行を待たずに済むように、照会に必要なデータを、照会で参照される前に読み込むことを指定します。
デフォルト値は、dft_prefetch_sz データベース構成パラメーターによって指定されます。
- AUTOMATIC
- 表スペースのプリフェッチ・サイズが自動的に更新されるように指定します。
プリフェッチ・サイズは、データベース・マネージャーにより管理されます。
表スペース内のコンテナー数が変化するたびに (1 つ以上のコンテナーを追加またはドロップする ALTER TABLESPACE ステートメントの正常実行の後)、プリフェッチ・サイズが自動的に更新されます。 プリフェッチ・サイズも、データベースの始動時に自動的に更新されます。
ページ数 (number-of-pages) - データのプリフェッチの実行中に、 表スペースから読み取られる PAGESIZE ページの数を指定します。 最大値は 32767 です。
- 整数 K | M
- プリフェッチ・サイズ値を、後に K (キロバイトの場合)、または M (メガバイトの場合) を付けた整数値として指定します。 このように指定した場合、バイト数をページ・サイズで割った値を下限に丸めたものを使用してプリフェッチ・サイズのページ数の値が決定されます。
- BUFFERPOOL バッファー・プール名
- この表スペースの表に対して使用するバッファー・プールの名前を指定します。 バッファー・プールは存在している必要があります (SQLSTATE 42704)。 さらに、CREATE TABLESPACE ステートメントが含まれるトランザクションの開始より前に存在している必要があります。 バッファー・プールが表スペースと同じ UOW に作成されている場合は、使用できません。 その代わりに、表スペースは、ページ・サイズが一致する小さいシステム・バッファー・プールを使用します。 これを指定しない場合、デフォルトのバッファー・プール (IBMDEFAULTBP) が使用されます。 バッファー・プールのページ・サイズは、表スペースに指定された (またはデフォルト指定された) ページ・サイズと一致していなければなりません (SQLSTATE 428CB)。 バッファー・プールに対して、この表スペースのデータベース・パーティション・グループを定義する必要があります (SQLSTATE 42735)。
- OVERHEAD number-of-milliseconds または OVERHEAD INHERIT
- 入出力コントローラーのオーバーヘッド、ディスク・シーク、および待ち時間を指定します。 この値を使用して、照会最適化時の入出力のコストを判別します。 非自動ストレージ表スペースに対して OVERHEAD が指定されていない場合、値のデフォルトには、
このキーワードの説明中に後述するように、データベース作成時のデフォルトが使用されます。 自動ストレージ表スペースに対して OVERHEAD が指定されていない場合、デフォルトでは、そこで使用されているストレージ・グループの値を INHERIT します。 ストレージ・グループの OVERHEAD 値が未定義である場合、OVERHEAD のデフォルトは、データベース作成時のデフォルトになります。 チューニングについて詳しくは、 照会の最適化に対する表スペースの影響を参照してください。
- number-of-milliseconds
- number-of-milliseconds の値は数値リテラル (整数、10 進数、または浮動小数点数) です。 この値がすべてのコンテナーに同じでなければ、数値は表スペースに属するすべてのコンテナーの平均になるはずです。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループから OVERHEAD が動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42613)。
Db2 バージョン 10.1 以降で作成されたデータベースの場合、4 KB PAGESIZE 表スペースのデフォルトの入出力コントローラー・オーバーヘッド、ディスク・シーク、および待ち時間は 6.725 ミリ秒です。
以前のバージョンの Db2 から Db2 バージョン 10.1 以降にアップグレードされたデータベースの場合、デフォルトの入出力コントローラーのオーバーヘッド、ディスク・シーク、および待ち時間は以下のようになります。- Db2 バージョン 9.7 以上で作成されたデータベースの場合、 7.5 ミリ秒
- FILE SYSTEM CACHING または NO FILE SYSTEM CACHING
- 入出力操作をファイル・システム・レベルでキャッシュするか、それともダイレクト入出力を使用してキャッシュしないかを指定します。 どちらのオプションも指定しない場合、入出力モードは、オペレーティング・システム、ファイル・システム、データ・オブジェクト・タイプ (SMS 表スペースの場合) に基づいて決定されます。 詳しくは、『ファイル・システム・キャッシング構成』を参照してください。 デフォルト以外のファイル・システム・キャッシング・オプションを一度選択すると、デフォルト (未指定) の動作に戻れなくなることに注意してください。 代わりに、ファイル・システム・キャッシング・モードを明示的に選択する必要があります。
- FILE SYSTEM CACHING
- ターゲット表スペースでのすべての入出力操作がファイル・システム・レベルでキャッシュに入れられることを指定します。
- NO FILE SYSTEM CACHING
- すべての入出力操作がファイル・システム・レベルのキャッシュを迂回することを指定します。 SMS 表スペース内の LOB および長形式フィールド・データを除きます。注:
Db2 は、物理セクター・サイズ 512 バイトまたは 4096 バイトのディスク装置をサポートします。
デフォルトでは 4096 バイトのセクター・サイズはサポートされませんが、DB2_4K_DEVICE_SUPPORT レジストリー変数を使用して有効にできます。
- TRANSFERRATE number-of-milliseconds または TRANSFERRATE INHERIT
- 1 ページをメモリーに読み込むための時間を指定します。 非自動ストレージ表スペースに対して TRANSFERRATE が指定されていない場合、値のデフォルトには、
このキーワードの説明中に後述するように、データベース作成時のデフォルトが使用されます。 自動ストレージ表スペースに対して TRANSFERRATE が指定されていない場合、デフォルトでは、そこで使用されているストレージ・グループの値を INHERIT します。 ストレージ・グループの DEVICE READ RATE 値が未定義である場合、TRANSFERRATE のデフォルトは、データベース作成時のデフォルトになります。 チューニングについて詳しくは、 照会の最適化に対する表スペースの影響を参照してください。
- number-of-milliseconds
- この値を使用して、照会最適化時の入出力のコストを判別します。 number-of-milliseconds の値は数値リテラル (整数、10 進数、または浮動小数点数) です。 この値がすべてのコンテナーに同じでなければ、数値は表スペースに属するすべてのコンテナーの平均になるはずです。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループの DEVICE READ RATE から TRANSFERRATE が動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42613)。
自動ストレージ表スペースが、そこで使用されているストレージ・グループから TRANSFERRATE 設定を継承する場合、ストレージ・グループの DEVICE READ RATE (メガバイト/秒単位) が変換され、その表スペースの PAGESIZE 設定に合わせた、1 ページを読み取るミリ秒数になります。 変換公式は次のようになります。
TRANSFERRATE = ( 1 / DEVICE READ RATE ) * 1000 / 1024000 * PAGESIZE
Db2 バージョン 10.1 以降で作成されたデータベースの場合、4 KB PAGESIZE 表スペースの 1 ページをメモリーに読み込むデフォルトの時間は 0.04 ミリ秒です。
以前のバージョンの Db2 から Db2バージョン 10.1 以降にアップグレードされたデータベースの場合、1 ページをメモリーに読み込むデフォルトの時間は以下のようになります。- 0.06 ミリ秒 ( Db2 バージョン 9.7 以上で作成されたデータベースの場合)
- DATA TAG integer-constant、DATA TAG INHERIT、または DATA TAG NONE
- 表スペース内のデータにタグを指定します。 DATA TAG が指定されていない場合のデフォルトは、自動ストレージ表スペースでは、そこで使用されているストレージ・グループから INHERIT され、非自動表スペースでは、NONE に設定されます。 この値は、ワーク・クラス定義で WLM 構成の一部として使用することも ( CREATE WORK CLASS SET ステートメントを参照)、しきい値定義内で参照することもできます ( CREATE THRESHOLD ステートメントを参照)。 この節は、TEMPORARY も指定されている場合には指定できません (SQLSTATE 42613)。
- integer-constant
- integer-constant の有効値は、1 から 9 までの整数定数です。 integer-constant が指定されていて、関連ストレージ・グループが存在する場合、その表スペースに指定されたデータ・タグは関連ストレージ・グループで指定されているデータ・タグ値をオーバーライドします。
- INHERIT
- INHERIT を指定した場合、表スペースは自動ストレージを使用して定義する必要があり、ストレージ・グループからデータ・タグが動的に継承されます。 INHERIT は、自動ストレージを使用して表スペースを定義しなかった場合には指定できません (SQLSTATE 42613)。
- NONE
- NONE が指定されている場合、データ・タグはありません。
- DROPPED TABLE RECOVERY
- ROLLFORWARD DATABASE コマンドの RECOVER DROPPED TABLE オプションを使用して、指定された表スペース内のドロップされた表をリカバリーできるかどうかを示します。 この節は、REGULAR 表スペースまたは LARGE 表スペースにのみ指定できます (SQLSTATE 42613)。
- ON
- ドロップされた表が回復可能であることを指定します。 これがデフォルトです。
- オフ
- ドロップされた表が回復不能であることを指定します。
ルール
- 自動ストレージがデータベースに定義されていない場合、エラーが戻されます (SQLSTATE 55060)。
- INITIALSIZE 節を、MANAGED BY SYSTEM または MANAGED BY DATABASE 節とともに指定することはできません (SQLSTATE 42601)。
- AUTORESIZE、INCREASESIZE、または MAXSIZE 節を、MANAGED BY SYSTEM 節とともに指定することはできません (SQLSTATE 42601)。
- AUTORESIZE、INITIALSIZE、INCREASESIZE、または MAXSIZE 節は、TEMPORARY 自動ストレージ表スペースを作成するために指定することができません (SQLSTATE 42601)。
- INCREASESIZE または MAXSIZE 節は、表スペースが自動サイズ変更不可である場合には指定できません (SQLSTATE 42601)。
- AUTORESIZE は、ロー・デバイス・コンテナーを使用するよう定義された DMS 表スペースに対しては、使用可能にできません (SQLSTATE 42601)。
- 表スペースの初期サイズは、5 つのエクステントを保持するのに十分な大きさでなければなりません (SQLSTATE 57011)。
- 表スペースの最大サイズは、その初期サイズよりも大きくなければなりません (SQLSTATE 560B0)。
- コンテナー操作 (ADD、EXTEND、RESIZE、DROP、または BEGIN NEW STRIPE SET) は、自動ストレージ表スペースに対しては実行できません。なぜならそのような表スペースのスペース管理は、データベース・マネージャーが制御しているからです (SQLSTATE 42858)。
- 各コンテナー定義には、53 バイトに加えて、コンテナー名を保管する のに必要なバイト数が必要です。 表スペースのすべてのコンテナー定義を結合した長さは、208 キロバイトを超えることはできません (SQLSTATE 54034)。
- パーティション・データベースで、複数のデータベース・パーティションが同じ物理ノードに存在する場合、複数のデータベース・パーティションに同じ装置またはパスを指定することはできません (SQLSTATE 42730)。 この環境では、それぞれのデータベース・パーティションごとに固有の container-string を指定するか、相対パス名を使用してください。
- Db2 pureScale 環境では、自動ストレージ表スペースのみを作成できます (SQLSTATE 42997)。
- コンテナー・サイズの制限: DMS 表スペースでは、コンテナーの長さはエクステント・サイズ・ページの長さの 2 倍以上でなければなりません (SQLSTATE 54039)。 コンテナーの最大サイズは、オペレーティング・システムによって 異なります。
注
- 表スペースをデータベース管理表スペース (DMS) にするか、システム管理表スペース (SMS) にするかは、トレードオフの関係にある基本的な選択です (それぞれの特徴をふまえた上で、どちらが要件に適切かを検討してください)。
- データベースに複数の TEMPORARY 表スペースが存在する場合は、使用率のバランスを調整するために、複数の表スペースが「ラウンドロビン」式で使用されます。
- 表スペースの所有者は、その表スペースの作成時に表スペースに関する WITH GRANT OPTION のある USE 特権を付与されます。
- 自動ストレージ表スペースは、SMS 表スペースまたは DMS 表スペースのいずれかとして作成されます。 DMS は、REGULAR 表スペースおよび LARGE 表スペースの場合に選択され、SMS は TEMPORARY 表スペースの場合に選択されます。 この動作には頼らないでください。今後のリリースで変更される可能性があります。 DMS を選択し、表スペースのタイプを指定しない場合は、LARGE 表スペースの作成がデフォルトの動作になります。
- 自動ストレージ表スペースの作成には、コンテナー定義は含まれません。 データベース・マネージャーが、指定されたストレージ・グループまたはデフォルトのストレージ・グループに関連付けられたストレージ・パスに基づいて、コンテナーのロケーションとサイズ (該当する場合) を自動的に決定します。 最大サイズにまだ達していなければ、データベース・マネージャーは、LARGE 表スペースと REGULAR 表スペースを必要に応じて拡張しようとします。 これには既存のコンテナーの拡張、または新規ストライプ・セットへのコンテナーの追加が含まれます。 データベースをアクティブにするたびに、データベース・マネージャーは、異常な状態にない TEMPORARY 表スペース用のコンテナーの数およびロケーションを自動的に再構成します。
- LARGE 自動ストレージ表スペースまたは REGULAR 自動ストレージ表スペースは、表スペースが使用している既存のストレージ・パスの 1 つにスペースがなくなるまで、新しいストレージ・パスを使用しません ( ALTER STOGROUP ステートメントの説明を参照)。 TEMPORARY 自動ストレージ表スペースは、データベースが非アクティブにされた後、再度アクティブにされた場合にのみ、新規ストレージ・パスを使用できます。
- メディア属性: 以下の表は、アップグレードおよび新規作成された Db2 バージョン 10.1 データベースで、新しく作成された表スペースのメディア属性がどのように扱われるかを示しています。
表 1. 異なるバージョンの Db2 間でのメディア属性 メディア属性 アップグレードされたデータベース 新規作成されたデータベース 新規自動ストレージ表スペース / ストレージ・グループ DEVICE READ RATE を undefined に設定 データベースが作成されたバージョンに基づくデフォルト (変更なし) 適用外 新規自動ストレージ表スペース / ストレージ・グループ OVERHEAD を undefined に設定 データベースが作成されたバージョンに基づくデフォルト (変更なし) 適用外 新規自動ストレージ表スペース / ストレージ・グループ DEVICE READ RATE を設定 PAGESIZE を考慮に入れてストレージ・グループから継承 PAGESIZE を考慮に入れてストレージ・グループから継承 新規自動ストレージ表スペース / ストレージ・グループ OVERHEAD を設定 ストレージ・グループから継承 ストレージ・グループから継承 新規非自動ストレージ表スペース データベースが作成されたバージョンに基づくデフォルト (変更なし) Db2 バージョン 10.1 メディアのデフォルト (PAGESIZE を考慮) - TRANSFERRATE のデフォルト: 次の表は、新規作成される表スペースごとの TRANSFERRATE のデフォルト値の違いを示しています。
表 2. TRANSFERRATE のデフォルト PAGESIZE TRANSFERRATE 4 KB ページ読み取りごとに 0.04 ミリ秒 8 KB ページ読み取りごとに 0.08 ミリ秒 16 KB ページ読み取りごとに 0.16 ミリ秒 32 KB ページ読み取りごとに 0.32 ミリ秒 - 代替構文: Db2 の以前のバージョンおよび他のデータベース製品との互換性のために、以下がサポートされています。 これらの代替は非標準であり、使用すべきではありません。
- DBPARTITIONNUM の代わりに NODE を指定できます。
- DBPARTITIONNUMS の代わりに NODES を指定できます。
- DATABASE PARTITION GROUP の代わりに NODEGROUP を指定できます。
- LARGE の代わりに LONG を指定できます。
- Db2 Developer-C Edition の場合:
- MAXSIZE を指定せずに自動サイズ変更の表スペースを変更すると、MAXSIZE に暗黙的に残りの容量が設定されます (最大値は定義済みのストレージ・サイズです)。
- 定義済みのストレージ・サイズを超えて、すべての表スペースのコンテナー・サイズをサイズ変更、追加、または拡張しようとすると失敗します。
- コミットされていない後続の CREATE TABLESPACE がある場合、表スペースの変更は失敗します。
例
- それぞれ 10 000 4K ページの 3 つの装置を使用して、 Linux システム上に LARGE DMS 表スペースを作成します。 それらの入出力特性も指定します。
CREATE TABLESPACE PAYROLL MANAGED BY DATABASE USING (DEVICE'/dev/rhdisk6' 10000, DEVICE '/dev/rhdisk7' 10000, DEVICE '/dev/rhdisk8' 10000) OVERHEAD 12.67 TRANSFERRATE 0.18
- 3 つの別々のドライブにある 3 つのディレクトリー (64 ページのエクステント・サイズと 32 ページのプリフェッチ・サイズ) を使用して、Windows 上に REGULAR SMS 表スペースを作成します。
CREATE TABLESPACE ACCOUNTING MANAGED BY SYSTEM USING ('/tbsp/acc1', '/tbsp/acc2', '/tbsp/acc3') EXTENTSIZE 64 PREFETCHSIZE 32
- それぞれが 50 000 ページの 2 つのファイルと 256 ページのエクステント・サイズを使用して、 Linux システム上に SYSTEM TEMPORARY DMS 表スペースを作成します。
CREATE TEMPORARY TABLESPACE TEMPSPACE2 MANAGED BY DATABASE USING (FILE 'dbtmp/tempspace2.f1' 50000, FILE 'dbtmp/tempspace2.f2' 50000) EXTENTSIZE 256
- Linux システム上のデータベース・パーティション・グループ ODDNODEGROUP (データベース・パーティション 1、3、および 5) に LARGE DMS 表スペースを作成します。 各データベース・パーティションで、装置 /dev/rhdisk0 の 10 000 個の 4K ページを使用します。 また、それぞれのデータベース・パーティションに、
40 000 個の 4K ページがあるデータベース・パーティション固有の装置を指定します。
CREATE TABLESPACE PLANS MANAGED BY DATABASE USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn1hd01' 40000) ON DBPARTITIONNUM (1) USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn3hd03' 40000) ON DBPARTITIONNUM (3) USING (DEVICE '/dev/rhdisk0' 10000, DEVICE '/dev/rn5hd05' 40000) ON DBPARTITIONNUM (5)
- DATATS という名の LARGE 自動ストレージ表スペースを作成し、表スペースのサイズと拡張に関するすべての決定をシステムに任せます。
またはCREATE TABLESPACE DATATS
CREATE TABLESPACE DATATS MANAGED BY AUTOMATIC STORAGE
- TEMPDATAという名前の SYSTEM TEMPORARY 自動ストレージ表スペースを作成します。
またはCREATE TEMPORARY TABLESPACE TEMPDATA
CREATE TEMPORARY TABLESPACE TEMPDATA MANAGED BY AUTOMATIC STORAGE
- 初期サイズが 100 M バイト、最大サイズが 1 G バイトの、USERSPACE3 という名の LARGE 自動ストレージ表スペースを作成します。
CREATE TABLESPACE USERSPACE3 INITIALSIZE 100 M MAXSIZE 1 G
- 拡張率が 10 パーセント (つまり、自動的にサイズ変更されるたびに、合計サイズが 10 パーセントずつ増加する) で、最大サイズが 512 M バイトの、LARGEDATA という名の LARGE 自動ストレージ表スペースを作成します。 INITIALSIZE 節を指定する代わりに、表スペースの適切な初期サイズをデータベース・マネージャーに決定させます。
CREATE LARGE TABLESPACE LARGEDATA INCREASESIZE 10 PERCENT MAXSIZE 512 M
- 2 つのファイル・コンテナーを持ち (各コンテナーのサイズは 1 M バイト)、拡張率が 2 M バイト、最大サイズが 100 M バイトの、USERSPACE4 という名の LARGE DMS 表スペースを作成します。
CREATE TABLESPACE USERSPACE4 MANAGED BY DATABASE USING (FILE '/db/file1' 1 M, FILE '/db/file2' 1 M) AUTORESIZE YES INCREASESIZE 2 M MAXSIZE 100 M
- Windows オペレーティング・システムで RAW デバイスを使用して、LARGE DMS 表スペースを作成します。
- 物理ドライブ全体を指定する場合は、¥¥.¥physical-drive という形式を使用します。
CREATE TABLESPACE TS1 MANAGED BY DATABASE USING (DEVICE '\\.\PhysicalDrive5' 10000, DEVICE '\\.\PhysicalDrive6' 10000)
- ドライブ名を使用して論理パーティションを指定する場合は、以下のようにします。
CREATE TABLESPACE TS2 MANAGED BY DATABASE USING (DEVICE '\\.\G:' 10000, DEVICE '\\.\H:' 10000)
- ボリュームのグローバル・ユニーク ID (GUID) を使用して論理パーティションを指定する場合は、db2listvolumes ユーティリティーを使用して、各ローカル・パーティションのボリュームの GUID を取得してから、対象の論理パーティションの GUID を表スペース・コンテナー節にコピーします。
マシンで使用できるドライブ名の数よりも多くのパーティションがある場合は、ドライブ名形式よりもボリュームの GUID を使用するほうが便利です。CREATE TABLESPACE TS3 MANAGED BY DATABASE USING ( DEVICE '\\?\Volume{2ca6a0c1-8542-11d8-9734-00096b5322d2}\' 20000M)
- ジャンクション・ポイント (またはボリュームのマウント・ポイント) を使用して論理パーティションを指定する場合は、NTFS 形式の別のボリュームにロー・パーティションをジャンクション・ポイントとしてマウントしてから、その NTFS ボリュームのジャンクション・ポイントのパスをコンテナー・パスとして指定します。 以下に例を示します。
まずパーティションが照会され、そこにファイル・システムが存在するかどうかが調べられます。存在していれば、パーティションは RAW デバイスとして扱われず、通常のファイル・システム入出力操作がパーティションに対して行われます。CREATE TABLESPACE TS4 MANAGED BY DATABASE USING (DEVICE 'C:\JUNCTION\DISK_1' 10000, DEVICE 'C:\JUNCTION\DISK_2' 10000)
- 物理ドライブ全体を指定する場合は、¥¥.¥physical-drive という形式を使用します。