(例)
4.3 ページの設計
図 4‒4 ページ内の未使用領域の比率
〔説明〕
• ページ内の未使用領域の比率を 30%としています。
• ページ内の未使用領域の比率は,CREATE TABLE又は
CREATE INDEX
のPCTFREE
オプション で指定します。未使用領域比率は 0〜99%の範囲で指定でき,省略値は 30%となります。• 未使用領域には,表へのデータロード(リロード又は表の再編成も含む)時にデータを格納しません。
ページ内の未使用領域の比率を小さくすれば,データの格納効率が向上します。ページ内の未使用領域の 比率を大きくすれば,性能が向上することがあります。例えば,データの更新時,次に示すどちらかの条 件を満たす場合はデータの入出力回数を削減できます。
• 更新前よりも行長が長くなる場合
• クラスタキーを指定した表に行を追加する場合
ページ内の未使用領域の比率の設計については,マニュアル「HiRDB システム導入・設計ガイド」を参 照してください。
4.3.4 ページの確保と解放 (1) ページの確保
表を定義したときにはページを確保しません。表にデータを格納するときに必要に応じてページを確保し ます。一度確保したページ(一度使用したページ)はそのページを解放しないかぎり,再使用できません。
インデクスを定義した場合はデータ件数に応じてページを確保します。データ件数0件の場合は 1 ページ
(ルートページ)だけを確保します。ただし,CREATE INDEX に EMPTY オプションを指定した場合(イ ンデクスの実体を作成しない場合)はページを確保しません。
参考
• 非 FIX 表で行長が変わるデータ更新をした場合は行長が減った分の領域を再使用できません。
4. データベースの物理構造
• インデクスページは削除ページに格納されていたキー値と同じキー値が追加されないかぎり,
そのページを再使用しません。
注意事項
データの削除によって発生した空き領域があるページを再使用するときは次に示す制限があるので 注意してください。
• 256 バイト以上の VARCHAR,BINARY 型,抽象データ型,及び繰返し列の分岐行は,その ページを使用できません。
• セグメントの使用率が 100%になるまで,データの挿入時にそのページを使用できません。
• DELETE を実行したトランザクションが COMMIT を発行するまで,DELETE によって発生 した空き領域を使用できません。
(2) ページの解放
• セグメントが解放されるとセグメント内のページは解放されます。
• EXCLUSIVE 指定の LOCK 文で排他を掛けた表に対して,UAP がページ内の全行を削除した場合,
そのページは解放されます。
• PURGE TABLE 文を実行すると表及びインデクスが使用中のセグメントが解放されるため,そのセグ メント内のページも解放されます。ただし,インデクスのルートページは残ります。
• 空きページ解放ユティリティ(pdreclaim コマンド)で使用中空きページを解放できます。使用中空き ページの解放については,マニュアル「HiRDB システム運用ガイド」を参照してください。
4. データベースの物理構造