7.4.1 使用中空きページの再利用
(1) 使用中空きページの解放
バッチジョブなどで表データを大量に削除すると,その表データを格納しているページ(データページ)の一部が使用中空きページになることがあります。また,インデクスを定義している場合は,インデクスのキー値を格納しているページ(インデクスページ)の一部が使用中空きページになります。空きページ解放ユティリティ(pdreclaim)を実行すると,この使用中空きページを未使用ページ化して再利用できます。これを使用中空きページの解放といいます。使用中空きページの解放を次の図に示します。
- ポイント
-
-
LOB用RDエリアに格納されているデータの使用中空きページは解放できません。
-
プラグインインデクスの使用中空きページは解放できません。
-
使用中空きページの解放については,マニュアル「HiRDB システム運用ガイド」を参照してください。
(2) 使用中空きページを解放したときの効果
(a) 表の使用中空きページを解放したときの効果
表の使用中空きページを解放したときの効果を次の表に示します。
- (凡例)
-
○:効果があります。
△:条件によって効果の度合いが変わります。
(b) インデクスの使用中空きページを解放したときの効果
インデクスの使用中空きページを解放したときの効果を次の表に示します。
効果がある項目 |
説明 |
効果の 度合い |
---|---|---|
インデクス格納RDエリアの容量不足の発生を抑えられる |
空きページ(使用中空きページ)があるのに領域不足になる場合は使用中空きページを解放してください。なお,キー値の更新又は削除が多い場合でもインデクス格納RDエリアの容量不足の発生を抑えられます。 |
◎ |
インデクスを再編成するサイクルを長くできる |
使用中空きページを再利用できるためデータの格納効率が良くなります。このため,インデクスを再編成するサイクルを長くできます。 |
○ |
インデクスを使用した大量データ検索時の性能が向上する |
使用中空きページは使用中ページのため検索処理時のサーチ対象になりますが,未使用ページはサーチ対象になりません(サーチ処理がスキップされます)。その分,検索処理の性能が向上します。特に,大量データを検索するときに効果が出ます。 |
△ |
- (凡例)
-
◎:特に効果があります。
○:効果があります。
△:条件によって効果の度合いが変わります。
特に,削除したキー値を再度登録しない場合にこの機能を適用すると効果があります。同一キー値の追加又は削除を繰り返す場合は使用中空きページを再利用するため,使用中空きページが大量に発生することはありません。しかし,単調増加又は単調減少する列(日付け,通番など)にインデクスを定義してデータの増加に伴い過去のデータを順番に削除する場合は,インデクスページの前半部分に再利用されない使用中空きページが大量に発生します。インデクスページに使用中空きページが作成される処理を次の図に示します。
なお,使用中空きページの解放後は解放したページにキー値を格納していくため,データの格納効率が良くなります。
(3) 表又はインデクスの再編成との違い
性能面及びデータの格納効率という点から見ると,使用中空きページの解放より表又はインデクスの再編成の方が優れています。しかし,使用中空きページの解放の場合は,ユティリティの実行中に処理対象表又はインデクスをアクセスできます。再編成の場合は,ユティリティの実行中に処理対象表又はインデクスをアクセスできません。このため,使用中空きページの解放の場合は業務を中断する必要がありません。
再編成をするか,使用中空きページを解放するかはデータベース状態解析ユティリティの実行結果から判断してください。判断基準を次に示します。
-
使用中空きページが大量にある場合は使用中空きページを解放してください。
-
セグメント内の空きページ比率(CREATE TABLEのPCTFREEオペランドの値)と懸け離れたページ使用率の使用中ページが大量にある場合は再編成をしてください。