Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
BTREE構造は、インデックスに対する格納構造です。内部的には、木構造のインデックス部とデータ部からなっています。インデックス部は、インデックスのキーと実表データとの対応情報の組の値からなっており、データを格納するページを管理します。インデックス部に対して、データを格納するページからなる部分を、“データ部”と呼びます。
DSO定義のベース表現としてADDRESSが指定された場合は、実表データとの対応情報として表のレコードの格納アドレスが使用され、KEYが指定された場合は、クラスタキーが使用されます。
データ部のあるページにデータが収まらない場合は、Symfoware/RDBが新しいページを切りだし、そのページと元のページとの間でデータを分配して格納します(これをぺージスプリットと呼びます)。データ部のぺージスプリットにともなって、インデックス部のページスプリットが行われる場合があります。
インデックスのキーが一意キーでない場合には、1つのインデックスキーの値に対して複数の実表データとの対応情報の値が存在することがあります。また、その重複度(実表データとの対応情報の数)もインデックスのキーの値に依存し一定ではありません。そのため、BTREE構造では、インデックスのキーと実表データとの対応情報を組にして管理します。このキーの組に対して昇順を保証します。さらに、格納効率を良くするため、インデックスのキーの部分を前方圧縮します。
図:BTREE構造の概略に在庫表を例にとってBTREE構造の概略を示します。この例では、倉庫番号の列の上にインデックスが定義され、また表の格納構造はSEQUENTIAL構造であるとします。
データの処理の効率に一番影響のある要因は入出力回数です。BTREE構造の場合は以下の特徴があります。
BTREE構造では、インデックス部とデータ部に対して、それぞれのページ長を独立に指定できます。データ部のページ長はDSO定義のPAGESIZE1オプションで指定します。インデックス部のページ長はPAGESIZE2オプションで指定します。
ページ長の指定の際の考慮点には、以下のものがあります。
インデックスは、1つの実表に対して複数付加することができます。検索の場合には、インデックスの付加によって処理効率を上げることができます。しかし、以下のような場合には、関連するすべてのインデックスのアップグレード処理が行われるため、全体としての処理効率が低下することがあるので注意が必要です。
目次 索引 |