スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

[目次][索引][前へ][次へ]

15.10.2 使用中空きページの再利用

<この項の構成>
(1) 使用中空きページの解放
(2) 使用中空きページを解放したときの効果
(3) 表又はインデクスの再編成との違い
(4) 運用方法
(5) 注意事項

(1) 使用中空きページの解放

バッチジョブなどで表データを大量に削除すると,その表データを格納しているページ(データページ)の一部が使用中空きページになることがあります。また,インデクスを定義している場合は,インデクスのキー値を格納しているページ(インデクスページ)の一部が使用中空きページになります。空きページ解放ユティリティpdreclaimコマンド)を実行すると,この使用中空きページを未使用ページ化して再利用できます。これを使用中空きページの解放といいます。使用中空きページの解放を次の図に示します。

図15-2 使用中空きページの解放

[図データ]

ポイント
  • LOB用RDエリアに格納されているデータの使用中空きページは解放できません。
  • プラグインインデクスの使用中空きページは解放できません。

(2) 使用中空きページを解放したときの効果

(a) 表の使用中空きページを解放したときの効果

表の使用中空きページを解放したときの効果を次の表に示します。

表15-7 表の使用中空きページを解放したときの効果

効果がある項目 説明 効果の
度合い
表を再編成するサイクルを長くできる 使用中空きページを再利用できるためデータの格納効率が良くなります。このため,表を再編成するサイクルを長くできます。
大量データ検索時の性能が向上する 使用中空きページは使用中ページのため検索処理時のサーチ対象になりますが,未使用ページはサーチ対象になりません(サーチ処理がスキップされます)。その分,検索処理の性能が向上します。特に,大量データを検索するときに効果が出ます。
INSERT及びUPDATE時の性能が向上する 使用中ページにデータを格納するとき,データの格納に必要な連続した空き領域を確保できないと,HiRDBはページコンパクションという処理を行います。ページコンパクションとは,データの格納に必要な連続した空き領域を確保するために行われるページ内のデータ詰め替え処理のことです。
使用中空きページを解放するときにページコンパクションも同時に行います。このため,INSERT及びUPDATE処理の延長で行われるページコンパクションが不要になり,その分処理性能が向上します。なお,ページコンパクションの処理対象ページは,満杯ページ及び使用中空きページを除いた使用中ページになります。
分岐行のINSERT及びUPDATE時のエラー発生を抑えられる 未使用ページがない状態で分岐行のINSERT及びUPDATEを実行すると,エラー(KFPA11756-Eメッセージ)になります。使用中空きページの解放で未使用ページが増えるため,このエラーの発生を抑えられます。

(凡例)
○:効果があります。
△:条件によって効果の度合いが変わります。

特に,次の表に示す条件をすべて満たす表に対してこの機能を適用すると効果があります。

表15-8 使用中空きページの解放の効果がある表

条件 理由
可変長文字列の更新がない 分岐行が発生しないため,使用中空きページが解放できる可能性が高くなります。
分岐行は基本行と別のページにあり,そのページには別のデータの基本行が格納されます。このため,分岐していると,ある一定の値(登録期間など)の行を削除してもページに格納されているデータが0件にならない可能性があります。したがって,分岐していなければ,ある期間にINSERTしたデータを削除すると,連続した領域(ページ)が空くため,使用中空きページを解放できる可能性が高くなります。
繰返し列の要素数変更がない
NULL値を実データに,又は実データをNULL値に変更しない
クラスタキーインデクスを定義していない クラスタキーインデクスを定義している場合はデータの格納位置がキー値で決定するため,使用中空きページを解放してもそのページを使用しない可能性が高く,効果が余りないと考えられます。
LOBデータがない LOB用RDエリアの格納データはこの機能を適用できません。
同一ページ中のデータを一度に削除する 使用中空きページができやすいため,使用中空きページを解放できる可能性が高くなります。
REUSE表(空き領域の再利用機能を使用した表)である REUSE表の場合,空きページ解放ユティリティで解放した空きページを空きページ再利用モード時にすぐに再利用できます。REUSE表でない場合,空きページ解放ユティリティで解放した空きページをRDエリア内に新規セグメントが確保できなくなるまで使用しません。

上記の表に示す条件から,クラスタキーインデクスを定義していないFIX属性のREUSE表がこの機能を適用するのに最適な表になります。

(b) インデクスの使用中空きページを解放したときの効果

インデクスの使用中空きページを解放したときの効果を次の表に示します。

表15-9 インデクスの使用中空きページを解放したときの効果

効果がある項目 説明 効果の
度合い
インデクス格納RDエリアの容量不足の発生を抑えられる 空きページ(使用中空きページ)があるのに領域不足になる場合は使用中空きページを解放してください。なお,キー値の更新又は削除が多い場合でもインデクス格納RDエリアの容量不足の発生を抑えられます。
インデクスを再編成するサイクルを長くできる 使用中空きページを再利用できるためデータの格納効率が良くなります。このため,インデクスを再編成するサイクルを長くできます。
インデクスを使用した大量データ検索時の性能が向上する 使用中空きページは使用中ページのため検索処理時のサーチ対象になりますが,未使用ページはサーチ対象になりません(サーチ処理がスキップされます)。その分,検索処理の性能が向上します。特に,大量データを検索するときに効果が出ます。

(凡例)
◎:特に効果があります。
○:効果があります。
△:条件によって効果の度合いが変わります。

特に,削除したキー値を再度登録しない場合にこの機能を適用すると効果があります。同一キー値の追加又は削除を繰り返す場合は使用中空きページを再利用するため,使用中空きページが大量に発生することはありません。しかし,単調増加又は単調減少する列(日付,通番など)にインデクスを定義してデータの増加に伴い過去のデータを順番に削除する場合は,インデクスページの前半部分に再利用されない使用中空きページが大量に発生します。インデクスページに使用中空きページが作成される処理を次の図に示します。

図15-3 インデクスページに使用中空きページが作成される処理

[図データ]

なお,使用中空きページの解放後は解放したページにキー値を格納していくため,データの格納効率が良くなります。

参考
使用中空きページだけが処理の対象になります。格納効率が低下したページのページコンパクションはありません。格納効率が低下したページ(使用中空きページを除く)が大量にある場合に適用しても効果はありません。

(3) 表又はインデクスの再編成との違い

性能面及びデータの格納効率という点から見ると,使用中空きページの解放より表又はインデクスの再編成の方が優れています。しかし,使用中空きページの解放の場合は,ユティリティの実行中に処理対象表又はインデクスをアクセスできます。再編成の場合は,ユティリティの実行中に処理対象表又はインデクスをアクセスできません。このため,使用中空きページの解放の場合は業務を中断する必要がありません。

再編成をするか,使用中空きページを解放するかはデータベース状態解析ユティリティの実行結果から判断してください。判断基準を次に示します。

(4) 運用方法

(a) システムログファイルの容量を見積もる

使用中空きページを解放するときにデータベースの更新ログを取得するため,システムログファイルの容量を見積もり直してください。システムログファイルの容量見積もりについては,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(b) ページの状態を確認する

データベース状態解析ユティリティ(pddbstコマンド)で,ページの格納効率,使用中空きページ数などを定期的に確認してください。ページの使用率が0%のページが使用中空きページです。ページの使用率及び使用中空きページ数は「RDエリア単位の状態解析(論理的解析)」又は「表又はインデクス単位の状態解析」のUsed Page Ratioに表示されます。

使用中空きページ数が増加してきた場合や,データの格納効率が低下してきた場合に使用中空きページの解放を検討してください。

(c) 空きページ解放ユティリティを実行する

空きページ解放ユティリティで使用中空きページを解放します。

表の使用中空きページを解放する場合は,ページコンパクションを行うかどうかを検討してください。次に示す場合はページコンパクションの効果がないため,ページコンパクションをしないで空きページ解放ユティリティを実行してください。

(d) 結果を確認する

空きページ解放ユティリティの実行結果を参照して,予定どおり使用中空きページが解放されているかを確認してください。また,使用中空きセグメントが多い場合は使用中空きセグメントの解放を検討してください。使用中空きセグメントの解放については,「15.10.3 使用中空きセグメントの再利用」を参照してください。

(e) 空きページ解放ユティリティが異常終了した場合

空きページ解放ユティリティが異常終了した場合,異常終了直前の処理対象ページまで使用中空きページが解放された状態になります。そのまま,何もしなくても問題はありませんが,空きページ解放ユティリティを再実行すると残りの使用中空きページが解放されます。

(5) 注意事項

インデクスに対して空きページ解放ユティリティを実行する場合,ユティリティの実行中にUAPが長時間待たされることはありません。ただし,処理対象のインデクスにUAPがアクセスした場合,空きページ解放ユティリティはUAPのトランザクション決着処理を待つことがあります。

なお,待ち時間の上限を空きページ解放ユティリティの-wオプションで指定できます。指定した待ち時間内に待ち状態が解除されないと,KFPH25002-Eメッセージを出力して空きページ解放ユティリティを異常終了します。-wオプションを省略するとUAPのトランザクションが決着するまで待ち続けます。