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

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

機能

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

記述形式

構文の構成

参照項番

権限

一般規則

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

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

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

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

縮退指定(DEGENERATE)
  • インデックスを縮退する場合に指定します。

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

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

  • DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表にインデックスを作成する場合、本オプションを指定することはできません。インデックスキーに対する特定の更新パターンにおいて、インデックスの縮退が行われない場合があるため、インデックスの容量監視を行い、必要に応じて再編成を行ってください。または、BTREE構造のデータ部の見積り式において、表のレコード数に更新または削除するレコードの延べ数を含めて見積りを行ってください。

    特定の更新パターンとは、現状格納されているインデックスキーの範囲よりも大きなインデックスキーに更新する処理を繰り返し実行するような場合です。

    参照

    BTREE構造のデータ部の見積り式については、“RDB運用ガイド(データベース定義編)”を参照してください。

再配置指定(REALIGNMENT)
  • REALIGNMENTを指定すると、データの再配置を行うことでインデックスのアクセスを常に最適な状態に保ち、インデックスの再編成を不要にします。本機能は、24時間連続運転などの業務を中断して、インデックスの再編成が実施できない場合に指定します。

  • DSO定義でPRECEDENCE(1)が指定されたSEQUENTIAL構造の表にインデックスを作成する場合、本オプションを指定することはできません。インデックスキーに対する特定の更新パターンにおいて、インデックスの縮退が行われない場合があるため、インデックスの容量監視を行い、必要に応じて再編成を行ってください。または、BTREE構造のデータ部の見積り式において、表のレコード数に更新または削除するレコードの延べ数を含めて見積りを行ってください。

    特定の更新パターンとは、現状格納されているインデックスキーの範囲よりも大きなインデックスキーに更新する処理を繰り返し実行するような場合です。

    参照

    BTREE構造のデータ部の見積り式については、“RDB運用ガイド(データベース定義編)”を参照してください。

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倍になります。

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

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

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

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

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

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

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

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

  • 拡張領域の割付け先を省略した場合、省略値は以下となります。

    • アラームポイント : 【ベース部の割付け量 × 80%】以下となるページ長の倍数の最大値

    • 拡張契機 : 0キロバイト

    • 拡張量 : 1024キロバイト

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

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

  • 割付け量は、ページ長単位に繰り上げますので、ベース部のページ長の倍数で指定してください。

  • インデックス部の割付け量は、ベース部の5分の1の値となります。ベース部の5分の1がインデックス部のページ長の倍数でない場合、インデックス部のページ長の倍数に繰り上げます。

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

アラームポイント
  • アラームポイントの契機を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

注意

  • ロードシェア運用の場合、他ノードのRDBシステムまたは当該RDBシステムでRDBネットへの参入と離脱が行われていると、エラーとなります。

  • ロードシェア運用の場合、ユーザロググループの縮退または切り戻しが行われている場合、エラーとなります。

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

  • 縮退指定(DEGENERATE)および再配置指定(REALIGNMENT)は、インデックスのDSI定義文およびインデックスのDSO定義文でそれぞれ指定が可能です。それぞれで異なる指定をした場合、インデックスのDSI定義文で指定した値が有効になります。インデックスのDSI定義文に縮退指定(DEGENERATE)および再配置指定(REALIGNMENT)を省略した場合は、インデックスのDSO定義文の指定に従います。