追加・改善機能《その他》
データベースインデックスの見直しによるパフォーマンス改善
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の処理が終了しました。
<-- 処理が終了しました。