はじめに
Oracleのアーカイブログモードは、処理時間にどの程度影響するのでしょうか。
アーカイブログを取得するモードのほうがログを出力する分、処理時間がかかりそうですが、ノーアーカイブモードと比較して、どのくらい遅くなるのか検証してみました。
【オラクル認定資格試験対策書】ORACLE MASTER Bronze[11g SQL基礎Ⅰ](試験番号:1Z0-051)完全詳解+精選問題集 (オラクルマスタースタディガイド)
posted with amazlet at 15.02.04
エディフィストラーニング株式会社 西 昭彦 飯室 美紀 鈴木 佐和 岡野 友紀
ソフトバンククリエイティブ
売り上げランキング: 6,820
ソフトバンククリエイティブ
売り上げランキング: 6,820
条件
- 100万件のレコードをPL/SQLで削除する。
- アーカイブログをON/OFFで比較
- 試行前にキャッシュをクリアし、3回試行して平均する。
ざっくり言うと
- アーカイブログモードのほうが遅い。
- 大体、25%くらい遅くなる
- 通常の運用はアーカイブログモード。それを考慮して性能検証をする。
レコード挿入スクリプト
truncate table table01; set timing on insert /*+ APPEND */ into table01 nologging ( id, name, furigana, seibetsu, birthday) (select lpad(rownum, 8, '0'), concat('テスト 太郎', TO_MULTI_BYTE(rownum)), concat('てすと たろう', TO_MULTI_BYTE(rownum)), CASE MOD(rownum, 2) WHEN 0 THEN '男' ELSE '女' END, TO_CHAR(TO_DATE('20130101','YYYYMMDD') + FLOOR(DBMS_RANDOM.VALUE(0, 365)), 'YYYYMMDD') from (select 0 from all_catalog where rownum <= 1000), (select 0 from all_catalog where rownum <= 1000) ); commit;
レコード削除スクリプト
set serveroutput on; declare vNum NUMBER; vDelCount NUMBER; vTableRecord NUMBER; begin vNum := 0; vDelCount :=0; loop --レコードを削除 delete from table01 where 'A' = 'A' and rownum <= 1000; vDelCount := SQL%ROWCOUNT; dbms_output.put_line (vDelCount); commit; IF vDelCount = 0 THEN exit; END IF; vNum := vNum + vDelCount; end loop; dbms_output.put_line (vNum || '件削除しました'); end; /
測定結果
試行回数 | ノーアカイブモード(秒) | アーカイブモード(秒) | 処理時間差(%) |
1st | 62.985 | 77.625 | − |
2st | 62.219 | 78.578 | − |
3st | 66.734 | 83.297 | − |
avg | 63.98 | 79.83 | 24.78%増 |
25%くらい遅くなりました。