追加・改善機能《その他》

データベースインデックスの見直しによるパフォーマンス改善

Ver.4.11.10 ise-3562

概要

統合メーラーおよび連絡・通知について、データベースインデックスの見直しを行いました。これにより統合メーラーおよび連絡・通知の各画面や機能でのレスポンス時間の短縮やデータベースのインデックス領域のサイズ圧縮が見込まれます。
本改善はINSUITE をVer.4.11.10 へバージョンアップするだけでは適用されません。以下の二つのコマンドを実行する必要があります。

  • /home/DreamArts/cmd/mail_db_define
  • /home/DreamArts/tools/V4.11.10/ns_user_db_define

1. /home/DreamArts/cmd/mail_db_define のオプション

# ./mail_db_define  -help 
usage : mail_db_define [-help] -index [-rebuild] [-no NO1[,NO2,NO3-NO4..]]
  -help      コマンドヘルプを表示する
  -index     インデックスを構築する
  -rebuild   再構築する(データベースに Oracle 使用時のみ有効)
  -no        処理を行うテーブル番号(0-100)
               0,2  --> is_mail_header_0,is_mail_header_2を処理する
               1-3  --> is_mail_header_1,is_mail_header_2,is_mail_header_3を処理する
  • mail_db_define -indexコマンドの実行により、IX_MAIL_HEADER_0_xxxなど利用頻度が少ないインデックスが削除されます。
  • mail_db_define -indexコマンドの実行する場合は、httpdサービスを停止し、INSUITEアプリケーションが利用されない状態にしてから実行してください。
  • また、コマンドの実行によりインデックス領域が大量に更新されるた、Oracleの統計情報を必ず更新してください。
  • 弊社の検証ではコマンドの実行時間は is_mail_header_n 1テーブルに 44万件のレコードが存在する環境で、 5分から10分を要しました。

実行例

# ./mail_db_define  -index

処理を開始します。 -->
DROP INDEX IX_MAIL_HEADER_0_MID
DROP INDEX IX_MAIL_HEADER_0_IMAP_HOST
DROP INDEX IX_MAIL_HEADER_0_IMAP_USER
DROP INDEX IX_MAIL_HEADER_0_FOLDER_NAME
DROP INDEX IX_MAIL_HEADER_0_UIDVALIDITY
DROP INDEX IX_MAIL_HEADER_0_UID_NUMBER
DROP INDEX IX_MAIL_HEADER_0_INTERNAL
DROP INDEX IX_MAIL_HEADER_0_SEEN
DROP INDEX IX_MAIL_HEADER_0_FLAGGED
DROP INDEX IX_MAIL_HEADER_0_TO_STATUS
DROP INDEX IX_MAIL_HEADER_0_DELETED
DROP INDEX IX_MAIL_HEADER_0_ATTACHMENT
DROP INDEX IX_MAIL_HEADER_0_PRIORITY
DROP INDEX IX_MAIL_HEADER_0_REPLIED
DROP INDEX IX_MAIL_HEADER_0_REPLIED
DROP INDEX IX_MAIL_HEADER_0_FORWARDED
DROP INDEX IX_MAIL_HEADER_0_ATTACH4AJX
DROP INDEX IX_MAIL_HEADER_0_INDEXES_5
DROP INDEX IX_MAIL_HEADER_0_INDEXES_6
is_mail_header_0 の処理が終了しました。

...
is_mail_header_1 の処理が終了しました。

2. /home/DreamArts/tools/V4.11.10/ns_user_db_define コマンドのオプション

# ./ns_user_db_define -help
usage : ns_user_db_define [-help] -index [-rebuild] [-no NO1[,NO2,NO3-NO4..]]
  -help      コマンドヘルプを?示する
  -index     インデックスを構築する
  -rebuild   再構築する(データベースに Oracle 使用時のみ有効)
  -no        処理を行うテーブル番号(0-100)
               2,12  --> ns_user_read_02,ns_user_read_12を処理する
               0-2  --> ns_user_read_00,ns_user_read_01,ns_user_read_02を処理する
  • ns_user_db_define -index の実行により、既存のインデックスIX_NS_USER_READ_xx_NUM、IX_NS_USER_READ_xx_MIDは削除され、あらたにIX_NS_USER_READ_xx_MULTI2が作成されます。
  • ns_user_db_define -indexコマンドの実行する場合は、httpdサービスを停止し、INSUITEアプリケーションが利用されない状態にしてから実行してください。
  • また、コマンドの実行によりインデックス領域が大量に更新されるた、Oracleの統計情報を必ず更新してください。
  • 弊社の検証ではコマンドの実行時間は ns_user_read_xx 1テーブルに 40万件のレコードが存在する環境で、 5分から10分を要しました。

実行例

# ./ns_user_db_define -index
処理を開始します。 -->
DROP INDEX IX_NS_USER_READ_01_NUM
DROP INDEX IX_NS_USER_READ_01_MID
CREATE INDEX IX_NS_USER_READ_01_MULTI2 ON NS_USER_READ_01 (NUM,MID) TABLESPACE IDX
ns_user_read_01の処理が終了しました。
。。。中間省略。。。
DROP INDEX IX_NS_USER_READ_99_NUM
DROP INDEX IX_NS_USER_READ_99_MID
CREATE INDEX IX_NS_USER_READ_99_MULTI2 ON NS_USER_READ_99 (NUM,MID) TABLESPACE IDX
ns_user_read_99の処理が終了しました。
<-- 処理が終了しました。