表のDSIの定義は、CREATE DSI文を使用して行います。表のDSI定義は、表のDSO定義に従ってデータベーススペースの割付けを行います。
以下に表のDSI定義の例を示します。
表のDSI定義
表の分割運用を適用しない場合(データ構造:SEQUENTIAL)
CREATE DSI 在庫表DSI DSO 在庫表DSO ↑ ↑ DSI名 DSO名 ALLOCATE DATA ON DBSP_1 SIZE 280K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
表の分割運用を適用しない場合(データ構造:RANDOM)
CREATE DSI 在庫表DSI DSO 在庫表DSO ↑ ↑ DSI名 DSO名 ALLOCATE PRIME ON DBSP_1 SIZE 200K, ←スペース割付け ↑ ↑ データベース 割付け量 スペース名 OVERFLOW ON DBSP_1 SIZE 80K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
表の分割運用を適用する場合(データ構造:SEQUENTIAL)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90) ↑ ↑ ↑ DSI名 DSO名 分割キー値 ALLOCATE DATA ON DBSP_2 SIZE 280K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
表の分割運用を適用する場合(データ構造:RANDOM)
CREATE DSI 関西発注表DSI DSO 発注表DSO USING(70,90) ↑ ↑ ↑ DSI名 DSO名 分割キー値 ALLOCATE PRIME ON DBSP_2 SIZE 200K, ←スペース割付け ↑ ↑ データベース 割付け量 スペース名 OVERFLOW ON DBSP_2 SIZE 80K ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
表のデータ構造がOBJECTの場合
CREATE DSI 製品写真DSI DSO 製品写真DSO ↑ ↑ DSI名 DSO名 ALLOCATE DATA ON DBSP_1 SIZE 100M ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
DSIの自動容量拡張の設定を行う場合
CREATE DSI 在庫表DSI DSO 在庫表DSO ↑ ↑ DSI名 DSO名 ALLOCATE DATA ON DBSP_1 SIZE 280K, ←スペース割付け ↑ ↑ データベース 割付け量 スペース名 EXPAND ON DBSP_1 ALARM 224K CAPACITY 0K SIZE 1M ↑ ↑ ↑ ↑ 容量拡張先 アラーム 拡張契機 拡張量 データベース ポイント スペース名
DSIに表のデータ圧縮機能を指定する場合
CREATE DSI 在庫表DSI DSO 在庫表DSO COMPRESS ↑ ↑ ↑ DSI名 DSO名 圧縮指定 ALLOCATE DATA ON DBSP_1 SIZE 1024M ←スペース割付け ↑ ↑ データベース 割付け量 スペース名
DSI名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。なお、DSI名は、データベース内で一意です。
DSO名
CREATE DSO文で指定した表のDSO名を指定します。
表の分割運用を行わない場合は、1つのDSO定義に対して1つのDSIだけを定義します。一方、表の分割運用を行う場合、分割キー値を指定した複数個のDSI定義が必要となります。表の分割運用を行う場合のDSI定義では、存在するデータをすべて網羅するだけのDSI定義が必要です。
COMPRESSを指定した場合、DSIに対して格納されるデータの圧縮を行います。表のデータ構造がSEQUENTIALの場合に指定可能です。
表の分割運用を行う場合に、分割条件の具体的な値を指定します。
分割キー値は、表のDSO定義の分割条件に指定した仮値リストの“?”に対する値を、定数で指定します。分割条件に複数の“?”が存在する場合には、その出現順序にあわせて、定数をカンマで区切り指定します。分割条件に指定した“?”の個数と、定数の個数は同じでなければなりません。
ある行(データ)の格納先が、複数のDSIとなるような分割キー値の指定はできません。
分割条件にBETWEENで複数の列を指定した場合、DSIで指定する分割値は複数列の値を連結して1の値として評価します。
分割条件が(年, 月)BETWEEN(?,?)AND(?,?)で、DSIの分割値に(2006,4,2007,3)を指定した場合、このDSIのデータ格納範囲は以下となります。たとえば、(2006,12)は範囲内のデータとなります。
2006年4月~2007年3月
“年”と“月”を連結して“年月”として評価します。
注意
たとえば、分割条件として(支店コード, 製品番号)BETWEEN(?,?)AND(?,?)を指定しても、DSIのデータ格納範囲として“支店コードの範囲 かつ 製品番号の範囲”とはならないので注意してください。
支店コード表を支店コードと製品番号の値で分割格納し、支店コード表に対する製品番号のDSIを作成します。
CREATE DSO 支店コード表DSO -- 支店コード表のDSO FROM STOCKS.支店コード表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(0)) WHERE (支店コード,製品番号) BETWEEN (?,?) AND (?,?); -- 支店コードと製品 -- 番号でデータ分割 CREATE DSI 支店コードDSI製品番号1 -- 支店コード表のDSI DSO 支店コード表DSO USING (100,1,199,10) -- (100,1)~(199,10) ALLOCATE DATA ON DBSP_2 SIZE 280K; -- の分割値 CREATE DSI 支店コードDSI製品番号2 -- 支店コード表のDSI DSO 支店コード表DSO USING (200,10,299,20) -- (200,10)~(299,20) ALLOCATE DATA ON DBSP_2 SIZE 280K; -- の分割値
下線で記述したレコードもDSIの分割条件に含まれるので注意してください。
分割キー値に指定可能な定数の記述形式を以下に示します。
対応する列の属性 | 分割キー値に指定可能な定数の記述形式 |
---|---|
SMALLINT | -32768~32767(小数点なし) |
INTEGER | -2147483648~2147483647(小数点なし) |
NUMERIC(p,q) | 整数部(小数点の左側)の数字の数はp-q以下 |
DECIMAL(p,q) | |
CHARACTER(n) | 文字数がn以下の文字列定数 |
NATIONAL CHARACTER(n) | 文字数がn以下の日本語文字列定数 |
DATE | 年から日までの10文字の日付 |
TIME | 時から秒までの8文字の時刻 |
TIMESTAMP | 年から秒までの19文字の時刻印 |
INTERVAL 開始日時フィールド TO 終了日時フィールド | 各フィールドの指定により、年~月、日~時刻の時間隔を格納 |
n : 文字数
p : 精度
q : 位取り
注)定数が小数点を含まない場合はすべて整数部となります。
p : 開始日時フィールドの精度(1~9の整数を指定)
表のDSIに対して物理的なスペースの割付けを指定します。
データを物理的に格納するデータベーススペース名、およびデータベーススペース中に、このDSI用に獲得する格納領域の大きさを指定します。獲得された格納領域は、DSO定義で指定されたページ長によりアクセスされます。
データベーススペース名
実際にデータを格納する、物理的なデータベーススペース名を指定します。
スケーラブルログ運用を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。
また、データを暗号化する場合は、以下の注意事項があります。
1つまたは複数のDSIの割付け先として、複数のデータベーススペースを指定する場合、データベーススペースの暗号化の指定を統一してください。
表のDSIおよびインデックスのDSIを定義する場合、データベーススペースの暗号化の指定は、統一する必要がありません。
割付け量には、データベーススペース中に獲得する格納領域の大きさを、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
割付け対象のデータベーススペースに、割付け量分の連続領域が存在しない場合、複数の領域に分割して割付けることがあります。複数の領域に分割されたかどうかは、rdbprtコマンドの出力結果で確認できます。DSI情報のAllocation informationのAllocate sizeに、指定した割付け量以下の値が表示された場合、複数の領域に分割して割付けられたと判断できます。
参照
rdbprtコマンドの詳細については、“コマンドリファレンス”を参照してください。
表のDSIによるデータベーススペースへの格納の単位は、表のDSO定義での分割条件と、分割キー値の指定により決定されます。以下に使用例を示します。
分割条件で指定した“?”の個数と分割値指定の定数の個数の関係
分割条件 : WHERE (取引先) = (?) 分割値 : USING (61) ↑ ↑ 仮値 = 1 定数 = 1 分割条件 : WHERE (取引先) BETWEEN (?) AND (?) 分割値 : USING (61,71) ↑ ↑ 仮値 = 2 定数 = 2 分割条件 : WHERE (製品名, 倉庫番号) = (?,?) 分割値 : USING (N'テレビ',2) ↑ ↑ 仮値 = 2 定数 = 2 分割条件 : WHERE (年度, 月) BETWEEN (?,?) AND (?,?) 分割値 : USING (2006,4,2007,3) ↑ ↑ 仮値 = 4 定数 = 4 :
備考.定数の個数と分割条件に指定した“?”は同数です。
在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対するテレビのDSIを作成します。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE SEQUENTIAL(PAGESIZE(4), ORDER(1)) WHERE (製品名,倉庫番号) = (?,?); -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSIテレビ2 -- 倉庫番号2の在庫表のDSI DSO 在庫表DSO USING (N'テレビ',2) -- 製品名テレビ、倉庫番号2 ALLOCATE DATA ON DBSP_1 SIZE 280K; -- の在庫表
発注表を取引先の地区別にデータ分割し、発注表に対する関西地区のDSIを作成します。発注表の発注先番号は地区別に割り振られており、70から79の範囲は、関西地区の会社を表しているものとします。
CREATE DSO 発注表DSO -- 発注表のDSO FROM STOCKS.発注表 TYPE RANDOM ( PAGESIZE1(4), PAGESIZE2(4), CLUSTER (取引先, 取引製品)) WHERE (取引先) BETWEEN (?) AND (?); -- 取引先の番号別に -- データ分割配置 CREATE DSI 関西発注表DSI -- 関西に所在の会社用の DSO 発注表DSO -- 発注表のDSI USING (70,79) -- 70番台は関西所在の会社 ALLOCATE PRIME ON DBSP_2 SIZE 200K, OVERFLOW ON DBSP_2 SIZE 80K;
在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対する製品名がテレビと冷蔵庫のDSIを作成します。なお、分割条件を製品名と倉庫番号とし、分割値の指定を複数指定するものとします。
CREATE DSO 在庫表DSO -- 在庫表のDSO FROM STOCKS.在庫表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(1)) WHERE (製品名,倉庫番号) = (?,?); -- 製品名と倉庫番号で -- データ分割 CREATE DSI 在庫表DSI電化製品 -- 倉庫番号2と1の DSO 在庫表DSO -- 在庫表のDSI USING (N'テレビ',2),(N'冷蔵庫',1) -- 製品名テレビと冷蔵庫 ALLOCATE DATA ON DBSP_1 SIZE 280K; -- の在庫表
売上表を年と月にデータ分割し、売上表に対する2005年度と2006年度の下半期の売上数量のDSIを作成します。なお、分割値の指定を複数指定するものとします。
CREATE DSO 売上表DSO -- 売上表のDSO FROM STOCKS.売上表 TYPE SEQUENTIAL ( PAGESIZE(4), ORDER(1)) WHERE (年度,月) BETWEEN (?,?) AND (?,?); -- 年度と月で -- データ分割 CREATE DSI 下半期DSI -- 2005年度と2006年度 DSO 売上表DSO -- の下半期のDSI USING (2005,10,2006,3),(2006,10,2007,3) -- 年度と月の売上表 ALLOCATE DATA ON DBSP_2 SIZE 280K;
自動容量拡張するデータベーススペース名を指定します。
スケーラブルログ運用を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。
また、データを暗号化する場合は、以下の注意事項があります。
1つまたは複数のDSIの割付け先として、複数のデータベーススペースを指定する場合、データベーススペースの暗号化の指定を統一してください。
表のDSIおよびインデックスのDSIを定義する場合、データベーススペースの暗号化の指定は、統一する必要がありません。
容量拡張定義を省略した場合、省略値は以下となります。
拡張領域の割付け先: DSIの割付け先のデータベーススペース
アラームポイント : 【データ部またはオーバーフロー部の割付け量 × 80%】以下となるページ長の倍数の最大値
拡張契機 : 0キロバイト
拡張量 : 1024キロバイト
注意
容量拡張先データベーススペースには、拡張量に指定した値以上の空き領域を用意してください。
また容量拡張定義を省略した場合、DSIの割付け先のデータベーススペースを容量拡張先データベーススペースとするため、DSIの割付け先のデータベーススペースに拡張量に指定した値以上の空き領域を用意してください。
アラームポイントの契機をDSIの使用容量で指定します。
使用容量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
自動容量拡張の拡張契機をDSIの空きページ容量で指定します。
空きページ容量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
DSIの拡張領域の割付け量を指定します。
拡張量は、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。
割付け対象のデータベーススペースに、拡張量分の連続領域が存在しない場合、複数の領域に分割して割付けることがあります。複数の領域に分割されたかどうかは、rdbprtコマンドの出力結果で確認できます。DSI情報のAllocation informationのAllocate sizeに、指定した拡張量以下の値が表示された場合、複数の領域に分割して割付けられたと判断できます。