Hitachi

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


11.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エリアの総ページ数の求め方」の「(2) 変数の説明」にある次の個所を参照してください。なお,表の種類によって参照先が異なります。

    なお,変数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トレース情報については,「10.11.2 SQLトレース情報に出力される情報」の「(10) SQL文の統計情報」を参照してください。