データベースの中に表スペースを作成すると、その表スペースにコンテナーが割り当てられ、 その定義と属性がデータベース・システム・カタログに記録されます。 このようにして、その表スペースに表を作成できるようになります。
表スペースの設計情報については、 FORM='TEXTONLY'.を参照してください。
CREATE TABLESPACE ステートメントの構文については、 で詳細に説明されています。 SMS と DMS の表スペースについては、 FORM='TEXTONLY'.を参照してください。
コントロール・センターを使用して表スペースを作成するには、以下のようにします。
|
コマンド行を使用して SMS 表スペースを作成するには、以下のように入力します。
CREATE TABLESPACE <NAME> MANAGED BY SYSTEM USING ('<path>')
コマンド行を使用して SMS 表スペースを作成するには、以下のように入力します。
CREATE TABLESPACE <NAME> MANAGED BY DATABASE USING (FILE'<path>' <size>)
次の SQL ステートメントは、別個の 3 つのドライブの 3 つのディレクトリーを使用して、 OS/2 または Windows NT 上で SMS 表スペースを作成するものです。
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:\acc_tbsp', 'e:\acc_tbsp', 'f:\acc_tbsp')
次の SQL ステートメントは、それぞれ 5,000 ページの各ファイル・コンテナーを使用して、 OS/2 上に DMS 表スペースを作成します。
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (FILE'd:\db2data\acc_tbsp' 5000, FILE'e:\db2data\acc_tbsp' 5000)
上記の 2 つの例では、コンテナーに明示的な名前が提供されました。 しかし、相対コンテナー名を指定する場合、 コンテナーはデータベース用に作成されたサブディレクトリーの中に作成されます ( FORM='TEXTONLY'.を参照)。
さらに、指定されたパス名の一部が存在しない場合は、 データベース・マネージャーが作成します。 サブディレクトリーがデータベース・マネージャーに作成される場合は、 表スペースが除去されると、 そのサブディレクトリーもデータベース・マネージャーによって削除されます。
上記の例は、表スペースが特定のノード・グループに関連付けられていないことを前提としています。 省略時のノード・グループである IBMDEFAULTGROUP は、 以下のパラメーターがステートメント内に指定されていない場合に使用されます。
IN nodegroup
以下の SQL ステートメントは、 それぞれ 10 000 ページの 3 つの論理ボリュームを使用して UNIX ベースのシステム上に DMS 表スペースを作成し、それらの入出力特性を指定します。
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (DEVICE '/dev/rdblv6' 10000, DEVICE '/dev/rdblv7' 10000, DEVICE '/dev/rdblv8' 10000) OVERHEAD 24.1 TRANSFERRATE 0.9
この SQL ステートメントで指定している UNIX 装置は、すでに存在しているものであり、 インスタンス所有者および SYSADM グループが書き込みを行えるようでなければなりません。
以下の例は、UNIX 区分データベース内の ODDNODEGROUP と呼ばれるノード・グループ上に DMS 表スペースを作成します。 ODDNODEGROUP は、CREATE NODEGROUP ステートメントを使用してあらかじめ作成されていなければなりません。 この場合、ODDNODEGROUP ノード・グループは、1、3、 および 5 の番号が付いたデータベース区画から成っていると想定されています。 すべてのデータベース区画上で、10 000 の 4 KB ページについて、 装置 /dev/hdisk0 を使用します。 さらに、40 000 の 4 KB ページから成るデータベース区画ごとに 1 つの装置を宣言します。
CREATE TABLESPACE PLANS MANAGED BY DATABASE USING (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n1hd01' 40000) ON NODE 1 (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n3hd03' 40000) ON NODE 3 (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n5hd05' 40000) ON NODE 5
UNIX 装置は次の 2 つの区分に分類されます。 それは、文字シリアル装置とブロック構造装置です。 すべてのファイル・システム装置の場合、 各ブロック装置 (つまりクックド・デバイス) ごとに、 対応する文字シリアル装置 (つまり生装置) を持っているのが普通です。 ブロック構造装置は、普通、"hd0" または "fd0" のような名前で指定されます。 文字シリアル装置は、普通、"rhd0"、"rfd0"、 または "rmt0" のような名前で指定されます。 これらの文字シリアル装置は、ブロック装置よりも速いアクセス速度を持っています。 文字シリアル装置名は、CREATE TABLESPACE コマンド上で使用する必要があり、 ブロック装置名は使用できません。
オーバーヘッドと転送速度は、SQL ステートメントのコンパイル時に使用する最善のアクセス・パスを決定するための目安になります。 OVERHEAD パラメーターと TRANSFERRATE パラメーターについては、 FORM='TEXTONLY'.を参照してください。
DB2 で順次事前取り出し機能を使用すると、並列入出力が使われ、 順次入出力のパフォーマンスを大幅に向上させることができます。 この機能についての詳細は、 FORM='TEXTONLY'.を参照してください。
省略時値の 4 KB サイズより大きいページ・サイズを使用する表スペースを作成することもできます。 次の SQL ステートメントは、UNIX ベースのシステムで 8 KB の SMS 表スペースを作成するものです。
CREATE TABLESPACE SMS8K PAGESIZE 8192 MANAGED BY SYSTEM USING ('FSMS_8K_1') BUFFERPOOL BUFFPOOL8K
関連したバッファー・プールのページ・サイズも、 同じ 8 KB でなければならないことに注意してください。
作成された表スペースは、それが参照するバッファー・プールが活動化されるまで使用できません。
ALTER TABLESPACE SQL ステートメントを使うと、 DMS 表スペースにコンテナーを追加したり、表スペースの PREFETCHSIZE、OVERHEAD、 および TRANSFERRATE の設定値を変更したりすることができます。 表スペース・ステートメントを発行するトランザクションは、 システム・カタログの競合を避けるために、できるだけ早くコミットする必要があります。
注: | PREFETCHSIZE は、EXTENTSIZE の整数倍でなければなりません。 たとえば、EXTENTSIZE が 10 なら PREFETCHSIZE は 20 や 30 などにする必要があります。 詳しくは、 FORM='TEXTONLY'.を参照してください。 |
システム一時表スペースは、システム一時表を格納するのに使用されます。 データベースを作成すると、 定義される 3 つの省略時表スペースのうち 1 つが、 "TEMPSPACE1" というシステム一時表スペースになります。
注: | システム一時表を格納できるのはシステム一時表スペースだけなので、 データベースは常に少なくとも 1 つのシステム一時表スペースを持っていなければなりません。 |
CREATE TABLESPACE ステートメントを使用して、 別のシステム一時表スペースを作成することもできます。 たとえば、次のとおりです。
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp MANAGED BY SYSTEM USING ('d:\tmp_tbsp','e:\tmp_tbsp')
システム一時表スペースの作成時に指定できるノードグループは、 IBMTEMPGROUP だけです。
ユーザー一時表スペースは、宣言された一時表を格納するのに使用されます。
CREATE TABLESPACE ステートメントを使用して、 ユーザー一時表スペースを作成できます。
CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY DATABASE USING (FILE 'd:\db2data\user_tbsp' 5000, FILE 'e:\db2data\user_tbsp' 5000)
正規表スペースと同様、 ユーザー一時表スペースは IBMTEMPGROUP 以外のノードグループに作成できます。 ユーザー一時表スペースの作成時には、 IBMDEFAULTGROUP が省略時のノードグループとして使用されます。
DECLARE GLOBAL TEMPORARY TABLE ステートメントは、 宣言された一時表を、ユーザー一時表スペース内で使用できるように定義します。
複数データベース区画ノード・グループの中に表スペースを置くことによって、 その表スペース内のすべての表が、 そのノード・グループ内の各データベース区画にわたって分割、つまり区分化されます。 表スペースはノード・グループ内に作成されます。 いったん 1 つのノード・グループ内に入ると、表スペースは、 そこにとどまらなければならず、別のノード・グループに変更することはできません。 CREATE TABLESPACE ステートメントは、 表スペースとノード・グループを関連付けるために使用されます。
DB2 ユニバーサル・データベースは、直接ディスク・アクセス (生 I/O) をサポートしています。 したがって、 直接ディスク・アクセス (生) 装置を DB2 ユニバーサル・データベース・システムに接続することができます。 (Linux、Windows 95、および Windows 98 オペレーティング・システムだけは例外です。) 以下のリストでは、この種類の装置を識別するための物理的また論理的方法が示されています。
ここで N は、システムにある物理ドライブのいずれかを表します。
この場合、N を 0、1、2、または他の正の整数に置き換えることができます。
\\.\PhysicalDisk5
ここで N: は、システムにある論理ドライブ名を表します。 たとえば、N: を E: または他のドライブ名で置き換えることができます。