前書き 2 変更内容 6
3.4 インデクス
3.4.3 インデクスページスプリット
CREATE INDEX A12 ON ZAIKO (TANKA DESC,SCODE ASC) 3 CREATE INDEX A12 ON ZAIKO (SCODE ASC,ZSURYO DESC,TANKA ASC) 4
1. すべての分割キー(SCODE 及び TANKA 列)を指定し,かつ分割キーの指定順序が表定義時と同 じため,この複数列インデクスは分割キーインデクスになります。
2. すべての分割キー(SCODE 及び TANKA 列)を指定し,かつ分割キーの指定順序が表定義時と同 じため,この複数列インデクスは分割キーインデクスになります。
3. すべての分割キー(SCODE 及び TANKA 列)を指定しているが,分割キーの指定順序が表定義時 と異なるため,この複数列インデクスは非分割キーインデクスになります。
4. すべての分割キー(SCODE 及び TANKA 列)を指定しているが,分割キーの指定順序が表定義時 と異なるため,この複数列インデクスは非分割キーインデクスになります。
図 3‒31 均等に分割するインデクスページスプリットの例
〔説明〕
インデクスページ a にキー 5 が追加されたため,インデクスページスプリットが発生し,キー 5 とそ の後の 6 が新しいインデクスページ b に移り,均等に分割されています。
(2) アンバランスインデクススプリット
連続したキー値を追加すると,インデクスページのデータ格納効率が下がります。このような場合,イン デクスページのインデクス情報を均等に分割しないで,不均等に分割できます。これをアンバランスイン
デクススプリットといいます。
アンバランスインデクススプリットの場合,インデクスページのインデクス情報を分割する比率をキー値 の追加位置で決定します。追加位置がインデクスページから見て前半部分であれば,以降,前半部分にキー が追加されると予測します。このため,追加するキー値より一つ大きいキー値を分割位置として,前半部 分を左側ページに格納します。追加位置が後半部分であれば,以降,後半部分にキーが追加されると予測 します。このため,追加位置を分割位置として,後半部分を右側ページに格納します。インデクスページ の後半部分にキーを追加した場合のアンバランスインデクススプリットの例を次の図に示します。
3. データベースの論理構造
図 3‒32 アンバランスインデクススプリットの例
〔説明〕
インデクスページ a にキー 7 が追加され,追加位置が後半であるため,キー 7 とそれより後のキー 8 が,右側のインデクスページ b に移っています。
適用基準
次に示すような場合にアンバランスインデクススプリットをすると,データの格納効率を向上できま す。また,インデクスページスプリットの発生回数の削減ができます。
• キーの重複度に偏りがないインデクス
• キー長がほぼ均一であるインデクス
• 連続した中間キー値を頻繁に追加するインデクス
アンバランスインデクススプリットの指定方法
アンバランスインデクススプリットをするには,定義系 SQL の
CREATE INDEX
又はCREATE TABLE
でUNBALANCED SPLIT
オプションを指定します。アンバランスインデクススプリットについ ては,マニュアル「HiRDB システム運用ガイド」を参照してください。3. データベースの論理構造