Hitachi

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


11.3.3 テキストインデクスの再作成

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

テキストインデクスを再作成すると,次に示す効果があります。

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

メモ

未完状態になったテキストインデクスを再作成したい場合は,「15.10.1 テキストインデクスが未完状態になったときの対処方法」を参照してください。

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

〈この項の構成〉

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

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

テキストインデクスを定義した表に格納されているデータのうち,0.01%以上のデータを更新(行の挿入および行の更新)した場合は,テキストインデクスを再作成することを検討してください。

また,テキストインデクスを定義した表に格納されているデータのうち,30%以上のデータを削除(行の削除)した場合も,テキストインデクスを再作成することを検討してください。

テキストインデクスを再作成すると,テキストインデクスを使用した検索性能の低下を防ぐことができます。

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

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

手順

  1. adbdbstatusコマンドでテキストインデクスの使用量を確認する

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

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

    テキストインデクスの容量を求める場合は,「5.8.1 データ用DBエリアの総ページ数の求め方」の「(2) 変数の説明」にある次の個所を参照してください。なお,表の種類によって参照先が異なります。

    なお,変数SGTIXは,データ用DBエリアに格納されているすべてのテキストインデクスの合計を求める計算式となっています。ここでは,対象のテキストインデクスだけを求めてください。

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

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

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

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

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

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

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