ページの先頭行へ戻る
Symfoware Server V12.2.0 RDB運用ガイド(データベース定義編)
FUJITSU Software

2.7.4 表のDSI定義

表の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

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のデータ格納範囲として“支店コードの範囲 かつ 製品番号の範囲”とはならないので注意してください。

例1

支店コード表を支店コードと製品番号の値で分割格納し、支店コード表に対する製品番号の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の分割条件に含まれるので注意してください。

分割キー値に指定可能な定数の記述形式を以下に示します。

表2.8 分割キー値に指定可能な定数の記述形式

対応する列の属性

分割キー値に指定可能な定数の記述形式

SMALLINT

-32768~32767(小数点なし)

INTEGER

-2147483648~2147483647(小数点なし)

NUMERIC(p,q)

整数部(小数点の左側)の数字の数はp-q以下
小数部(小数点の右側)の数字の数はq以下
(注)

DECIMAL(p,q)

CHARACTER(n)

文字数がn以下の文字列定数

NATIONAL CHARACTER(n)

文字数がn以下の日本語文字列定数

DATE

年から日までの10文字の日付

TIME

時から秒までの8文字の時刻

TIMESTAMP

年から秒までの19文字の時刻印

INTERVAL 開始日時フィールド TO 終了日時フィールド

各フィールドの指定により、年~月、日~時刻の時間隔を格納
(詳細は“表2.9 分割キー値に指定可能な時間隔型の記述形式”を参照)

n : 文字数
p : 精度
q : 位取り

注)定数が小数点を含まない場合はすべて整数部となります。

表2.9 分割キー値に指定可能な時間隔型の記述形式

型種類

開始日時フィールド

終了日時フィールド

指定の意味

年・月型

YEAR(p)

桁数pの年を表す時間隔

MONTH

桁数pの年と月を表す時間隔

MONTH(p)

桁数pの月を表す時間隔

日・時型

DAY(p)

SECOND

桁数pの日と時間から秒を表す時間隔

MINUTE

桁数pの日と時間から分を表す時間隔

HOUR

桁数pの日と時間を表す時間隔

桁数pの日を表す時間隔

HOUR(p)

SECOND

桁数pの時間と分から秒を表す時間隔

MINUTE

桁数pの時間と分を表す時間隔

桁数pの時間を表す時間隔

MINUTE(p)

SECOND

桁数pの分と秒を表す時間隔

桁数pの分を表す時間隔

SECOND(p)

桁数pの秒を表す時間隔

p : 開始日時フィールドの精度(1~9の整数を指定)

スペース割付け

表のDSIに対して物理的なスペースの割付けを指定します。

データを物理的に格納するデータベーススペース名、およびデータベーススペース中に、このDSI用に獲得する格納領域の大きさを指定します。獲得された格納領域は、DSO定義で指定されたページ長によりアクセスされます。

データベーススペース名

実際にデータを格納する、物理的なデータベーススペース名を指定します。

スケーラブルログ運用を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。

また、データを暗号化する場合は、以下の注意事項があります。

割付け量

割付け量には、データベーススペース中に獲得する格納領域の大きさを、符号なし整数と単位記号(KまたはM)の組合せで指定します。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。

割付け対象のデータベーススペースに、割付け量分の連続領域が存在しない場合、複数の領域に分割して割付けることがあります。複数の領域に分割されたかどうかは、rdbprtコマンドの出力結果で確認できます。DSI情報のAllocation informationのAllocate sizeに、指定した割付け量以下の値が表示された場合、複数の領域に分割して割付けられたと判断できます。

参照

rdbprtコマンドの詳細については、“コマンドリファレンス”を参照してください。

表のDSIによるデータベーススペースへの格納の単位は、表のDSO定義での分割条件と、分割キー値の指定により決定されます。以下に使用例を示します。

例1

分割条件で指定した“?”の個数と分割値指定の定数の個数の関係

分割条件 : 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
         :

備考.定数の個数と分割条件に指定した“?”は同数です。

例2

在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対するテレビの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; --  の在庫表
例3

発注表を取引先の地区別にデータ分割し、発注表に対する関西地区の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;
例4

在庫表を製品名と倉庫番号の値で分割格納し、在庫表に対する製品名がテレビと冷蔵庫の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;  --  の在庫表
例5

売上表を年と月にデータ分割し、売上表に対する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;

容量拡張先データベーススペース名

自動容量拡張するデータベーススペース名を指定します。

スケーラブルログ運用を行う場合、データを複数のデータベーススペースに格納するときは、同じロググループ内のデータベーススペース名を指定します。

また、データを暗号化する場合は、以下の注意事項があります。

容量拡張定義を省略した場合、省略値は以下となります。

拡張領域の割付け先: 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に、指定した拡張量以下の値が表示された場合、複数の領域に分割して割付けられたと判断できます。