14.6.2 アンバランスインデクススプリットとは
通常のインデクスページスプリットでは,連続したキー値を追加すると,インデクスページのデータ格納効率が下がります。このような場合,アンバランスインデクススプリットを使用します。アンバランスインデクススプリットとは,インデクスページのインデクス情報を均等に2分割しないで,不均等に分割することです。これによって,連続したキー値を追加したときに,データの格納効率を向上できます。
アンバランスインデクススプリットが指定された場合,インデクスページのインデクス情報を分割する比率は,キー値の追加位置で決定します。
追加位置がインデクスページから見て前半部分であれば,以降,前半部分にキーが追加されると予測します。このため,追加するキー値より一つ大きいキー値を分割位置として,前半部分を左側ページに格納します。
追加位置が後半部分であれば,以降,後半部分にキーが追加されると予測します。このため,追加位置を分割位置として,後半部分を右側ページに格納します。インデクスページの後半部分にキーを追加した場合のアンバランスインデクススプリットの例を次の図に示します。
(1) アンバランスインデクススプリットの適用範囲
アンバランスインデクススプリットは,最終ページでないリーフページだけに適用します。また,ロールバック時は,アンバランスインデクススプリットを適用しないで,通常のインデクスページスプリットを実施します。この場合,50:50の割合でページ分割します。
また,リーフページの最終ページは,定義系SQLのCREATE INDEXのPCTFREEオペランドで指定した値に従ってデータを分割します。これは,データロードなどによるキー値の昇順追加に対応するためです。
(2) アンバランスインデクススプリットの適用基準
次に示す条件を満たすインデクスに,アンバランスインデクススプリットを適用すると効果があります。
-
キーの重複度に偏りがないインデクス
-
キー長がほぼ均一であるインデクス
-
連続した中間キー値を頻繁に追加するインデクス