SQL 例
3.3.3 ページ内の未使用領域の設定
インデクスデータの格納効率を上げる場合は,ページ内の未使用領域の設定を検討して ください。
(1) ページ内の未使用領域とは
ページ内の未使用領域とは,データインポート時にインデクスデータを格納しない領域 のことです。
例えば,ページ内の未使用領域比率に
20%
を指定した場合,データのインポート時にイ ンデクスページ内に20%
の未使用領域を設定します。ページ内の未使用領域の概要を次 の図に示します。ページ内の未使用領域比率は,CREATE INDEX文の
PCTFREE
句で指定できます。図
3-3 ページ内の未使用領域の概要
説明
• この図では,ページ内の未使用領域の比率を
20%
としています。• データのインポート時,未使用領域にインデクスデータは格納されません。
ページ内の未使用領域の指定が有効になるのは,データのインポート時だけです。デー タの追加,更新,削除時には未使用領域の指定は有効になりません。ただし,次に示す 場合に限り,未使用領域の指定が有効になります。
• 行の追加または更新によって,最大キー値を格納しているインデクスページにインデ クスページスプリットが発生した場合,新しく確保したページに対しては未使用領域 の指定が有効になります。
■インデクスページスプリットとは
インデクスは,ページごとに管理するキーの範囲を決定しています。キー追加時に,
本来そのキーを格納するためのインデクスページに空きがない場合,該当ページが 管理しているキー群を二つに分割します。これをインデクスページスプリットとい います。インデクスページスプリットの例を次の図に示します。
図
3-4 インデクスページスプリットの例
(2) ページ内の未使用領域を設定するメリット
空き領域がないインデクスページにインデクスデータが追加されると,XDBはインデク スページスプリットを行って新規ページを確保し,インデクスデータを追加します。例 えば,未使用領域比率を
0%
とした場合,行を追加したときにインデクスページスプ リットが発生します。未使用領域を設定しておくと,行を追加したときに,その未使用 領域にインデクスデータが格納されるため,インデクスページスプリットが発生しませ ん。このように,ページ内の未使用領域を適切に設定すると,インデクスページスプ図
3-5 ページ内の未使用領域を設定するメリット
(3) ページ内の未使用領域に設定する値の目安
次のケースに当てはまる場合は,既定値(未使用領域比率
30%)よりも小さな値を指定
してください。• インデクスデータの格納効率を重視する場合
• インデクスの増加量が予測できない場合
• 最大キー値を追加する頻度が高い場合
• インデクスの増加量がキー値の範囲ごとに大きくばらつく場合 未使用領域の比率の目安となる計算式を次に示します。
計算式
変数の説明
INITROW:インポート時の表の行数 INS:将来予測される追加行数
ページ内の未使用領域の比率=↑INS÷(INITROW+INS)↑×100 (単位:%)