ページの先頭行へ戻る
Symfoware Server V10.0.0 SQLリファレンス

3.11 CREATE DSI文(インデックスのDSI定義文)

機能

表に付加するインデックスのデータを格納する領域を、データベーススペースに割り付けるために、DSIを定義します。

記述形式

構文の構成

参照項番

権限

一般規則

DSI
  • 作成するインデックスのDSIの名前を指定します。

  • DSI名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。

  • DSI名は、データベース内で一意の名前であることが必要です。

DSO
  • インデックスのDSI定義の対象とする表について、定義済であるインデックスのDSOの名前を指定します。

縮退指定(DEGENERATE)
  • インデックスを縮退する場合に指定します。省略した場合は、CREATE DSO文の指定に従います。

  • DEGENERATEを指定すると、行の削除によりインデックスのページ内に有効なデータがなくなった場合に、そのページを未使用として管理し、行の追加時に新たなページが必要になった時点で再使用を行います。DEGENERATEを指定しない場合には、有効なデータがなくなったページについてこの管理は行われません。

    DEGENERATEを指定することにより、インデックススペースの利用効率が向上し、インデックスの再創成の契機を減らすことが可能となります。

BASE
  • インデックスのDSIを定義する表に、分割条件を指定した表のDSOが定義されている場合、BASEオペランドを指定します。そうでない場合には、BASEオペランドは指定できません。

    • BASEオペランドのDSI名には、インデックスを作成する表に対して定義済である、表のDSIの名前を指定します。このとき、インデックスのDSIは、ここで指定した表のDSIに対応するインデックスのデータの格納領域を定義します。

割付け対象(BASEおよびINDEX)
  • 割付け対象には、BASEとINDEXを指定します。

  • スペース割付け句で指定する割付け対象の意味を“表3.1 インデックスのDSIに指定する割付け対象”に示します。

    表3.1 インデックスのDSIに指定する割付け対象

    指定する割付け対象

    意味

    BASE

    インデックスのDSIの、データ部にスペースを割り付ける。

    INDEX

    インデックスのDSIの、インデックス部にスペースを割り付ける。

    参照

    データ部およびインデックス部の構造については、“RDB運用ガイド(データベース定義編)”を参照してください。

割付け先(ON)
  • 1つの割付け要素について、同じデータベーススペースを2回以上指定することはできません。

データベーススペース名
  • インデックスのデータを格納するデータベーススペースの名前を指定します。

  • 1つのDSIの割付け対象の割付け先として指定するデータベーススペース名は、同じロググループのデータベーススペースでなければなりません。また、関連する表のDSIで割り付けたデータベーススペースと同じロググループを使用するものでなければなりません。

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

  • インデックスのDSIのデータ部およびインデックス部に対する割付け量は、それぞれのページ長の2倍以上を指定することが必要です。たとえば、データ部のページ長が2キロバイトの場合、データ部に対する割付け量は4キロバイト以上になるように指定します。インデックス部のページ長が1キロバイトの場合は、インデックス部に対する割付け量は2キロバイト以上になるように指定します。

  • 割付け量を省略した場合のインデックスのDSIのデータ部およびインデックス部に対する割付け量は、それぞれDSO定義時のページ長の84倍とデータ部の割付け量の1/5倍になります。

FORMAT
  • インデックスのDSIを初期化する場合に指定します。

  • 表のDSIが定義直後の場合、FORMATは指定できません。

  • rdbddlexコマンドの準備モードで定義する場合、FORMATは指定できません。

EXPAND OFF
  • アラームポイントおよび容量拡張定義を設定しない場合に指定します。

拡張領域の割付け先
  • 同じデータベーススペースを2回以上指定することはできません。

  • 1つのDSIの割付け対象の割付け先として指定するデータベーススペース名は、同じロググループを使用するデータベーススペースでなければなりません。

  • 拡張領域の割付け先には、拡張量に指定した値以上の空き領域を用意してください。
    また拡張領域の割付け先を省略した場合、DSIのデータベーススペースを拡張領域の割付け先とするため、DSIのデータベーススペースに拡張量に指定した値以上の空き領域を用意してください。

拡張領域の割付け量
  • 割付け量は、ページ長以上の値を指定してください。

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

アラームポイント
  • アラームポイントの契機をDSIの使用容量で指定します。

  • アラームポイントは、ページ長以上の値を指定してください。

  • アラームポイントには、DSIの使用量を符号なし整数と単位記号(KまたはM)の組合せで指定します。指定された値はページ長の整数倍に切り捨てます。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。1キロバイトは1024バイト、1メガバイトは1024キロバイトです。

  • アラームポイントを省略した場合、アラームポイントは設定されません。

拡張契機
  • 自動容量拡張の拡張契機をDSIの空き容量で指定します。

  • 拡張契機には、DSIの空き容量を符号なし整数と単位記号(KまたはM)の組合せで指定します。指定された値はページ長の整数倍に切り上げます。単位記号Kはキロバイト、単位記号Mはメガバイトを示します。1キロバイトは1024バイト、1メガバイトは1024キロバイトです。

  • 拡張契機を省略した場合、拡張契機の値は“DSIの容量 - アラームポイント”になります。

使用例

1

会社表のインデックスのDSIを定義します。インデックスのDSO定義は、“3.13 CREATE DSO文(インデックスのDSO定義文)”の例3で定義されています。

CREATE  DSI 会社表インデックスDSI  INDEX
        DSO 会社表インデックスDSO
        ALLOCATE BASE  ON DBSPACE001 SIZE 4000K,
                 INDEX ON DBSPACE002 SIZE  100K

2

在庫表のインデックスのDSIを定義します。なお、在庫表は製品名と倉庫番号の値で分割格納するものとします。この表のDSO定義は、“3.14 CREATE DSO文(表のDSO定義文)”の例4で、インデックスのDSO定義は、“3.13 CREATE DSO文(インデックスのDSO定義文)”の例4で、また、対応する表のDSIは、“3.12 CREATE DSI文(表のDSI定義文)”の例3で、それぞれ定義されています。

CREATE  DSI 在庫表インデックスDSIテレビ2  INDEX
        DSO 在庫表インデックスDSO  BASE  在庫表DSIテレビ2
        ALLOCATE BASE  ON DBSPACE001 SIZE 300K,
                 INDEX ON DBSPACE002 SIZE  50K

例3

会社表のインデックスのDSIを定義します。インデックスのDSO定義は、“CREATE DSO文(インデックスのDSO定義文)”の例3で定義されています。アラームポイントの契機をDSIの使用容量150キロバイト、自動容量拡張の拡張契機を空きページ容量0キロバイト、拡張量を1メガバイトとします。

CREATE  DSI 会社表インデックスDSI  INDEX
        DSO 会社表インデックスDSO
        ALLOCATE BASE  ON DBSPACE001 SIZE 200K,
                 INDEX ON DBSPACE002 SIZE  40K,
        EXPAND ON DBSPACE001 ALARM 150K CAPACITY 0K SIZE 1M

注意

FORMATを指定した場合、割付け量に応じて時間がかかります。