Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


10.3.2 B-treeインデクスの再作成

B-treeインデクスを定義した表に対して,行の挿入,行の更新,および行の削除を頻繁に実施した場合は,B-treeインデクスを再作成することを検討してください。

B-treeインデクスを再作成すると,次に示す効果があります。

B-treeインデクスを再作成する場合は,adbidxrebuildコマンドを実行してください。adbidxrebuildコマンドについては,マニュアル「HADB コマンドリファレンス」の「adbidxrebuild(インデクスの再作成)」を参照してください。

参考

B-treeインデクスを再作成するかどうかを判断する方法について,次に示します。

〈この項の構成〉

(1) B-treeインデクスを使用した検索性能の低下を防ぐ場合

B-treeインデクスを定義した表に対して,行の挿入,行の更新,または行の削除を頻繁に実施した場合は,B-treeインデクスを使用した検索性能が低下します。

その場合は,次に示す出力項目のうち,どちらか片方を確認してください。確認した結果,出力項目の値が大きい場合は,B-treeインデクスを再作成してください。B-treeインデクスを再作成すると,B-treeインデクスを使用した検索性能の低下を防ぐことができます。

「SQL文の統計情報」と「アクセスパスの統計情報」の両方を確認できる場合は,「アクセスパスの統計情報」を確認することを推奨します。「アクセスパスの統計情報」を確認すると,複数の表を検索している場合に,どの表に定義したB-treeインデクスを再作成すればよいかを確認できます。

(2) データ用DBエリアの使用量を削減する場合

B-treeインデクスを定義した表に対して,行の更新,または行の削除を頻繁に実施した場合は,次に示す手順に従って,B-treeインデクスを再作成するかどうかを判断してください。

手順

  1. adbdbstatusコマンドでB-treeインデクスの使用量を確認する

    adbdbstatusコマンドで,インデクスのサマリ情報を出力してください。そして,Used_segments(インデクスの使用中セグメント数)の出力内容を確認してください。adbdbstatusコマンドについては,マニュアル「HADB コマンドリファレンス」の「adbdbstatus(データベースの状態解析)」を参照してください。

  2. 実表内の有効なデータを基に見積もったB-treeインデクスの容量を確認する

    B-treeインデクスの容量を求める場合は,「5.8.1 データ用DBエリアの総ページ数の求め方」にある「SGIDX(シングルチャンク表の場合)」を参照してください。なお,変数SGIDXは,データ用DBエリアに格納されているすべてのB-treeインデクスの合計を求める計算式となっています。ここでは,対象のB-treeインデクスだけを求めてください。

手順1.および手順2.で確認した結果を比較して,その差が大きい場合は,B-treeインデクスを再作成してください。

(3) B-treeインデクスのインデクスページスプリットの発生を抑える場合

B-treeインデクスを定義した表に対して,行の挿入,または行の更新を頻繁に実施した場合は,インデクスページスプリットが発生するおそれがあります。

インデクスページスプリットの発生有無については,「SQL文の統計情報」のBidx_page_split_cnt(B-treeインデクスのインデクスページスプリットが発生した回数)を確認してください。確認した結果,インデクスページスプリットが発生している場合は,B-treeインデクスを再作成してください。B-treeインデクスを再作成すると,インデクスページ内の未使用領域を再度確保できるため,インデクスページスプリットの発生を抑えることができます。

SQL文の統計情報は,統計ログファイルおよびSQLトレースファイルに出力されます。

統計ログファイルに出力されたSQL文の統計情報を確認する場合は,adbstatコマンドを実行してください。adbstatコマンドについては,マニュアル「HADB コマンドリファレンス」の「adbstat(HADBサーバの統計解析)」を参照してください。

SQLトレースファイルに出力されたSQL文の統計情報を確認する場合は,SQLトレースファイル中のSQLトレース情報を確認してください。SQLトレース情報については,「9.10.2(9) SQL文の統計情報」を参照してください。