REDOログファイルサイズの違いによる更新処理速度検証
この前少しかかわったシステムのREDOログファイルを見てみると4MBしかなかった。
いくらなんでもすくな過ぎるだろって思ったけど、サイズが小さければ実際どの程度
パフォーマンスに影響が出るのかあまり実感がないので検証してみた。
- 検証環境
- Oracle 10g
- Windows 2000
- NOARCHIVE LOGモード
- すべてのREDOロググループは同じディスク上
- 検証方法
- 10万件INSERTして所要時間を計測
REDOログファイルサイズ4MBで検証
ログファイルサイズ確認
SQL> set lines 1000 SQL> select * From v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TI ---------- ---------- ---------- ---------- ---------- ------ -------------------------------- ------------- -------- 1 1 38 4194304 1 NO ACTIVE 556353 07-05-04 2 1 39 4194304 1 NO CURRENT 556359 07-05-04 3 1 37 4194304 1 NO INACTIVE 556348 07-05-04
10万件INSERT
SQL> set timing on SQL> begin 2 FOR i in 1..100000 loop 3 insert into TEST(test_num,test_var,test_var2,test_var3,test_var4,test_var5) 4 values(i,'AAAAAA','BBBBB','CCCCC','DDDDD','EEEEEE'); 5 end loop; 6 end; 7 8 / PL/SQLプロシージャが正常に完了しました。 経過: 00:00:30.04
実行後のREDOログファイルを確認すると
SQL> select * From v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TI ---------- ---------- ---------- ---------- ---------- ------ -------------------------------- ------------- -------- 1 1 47 4194304 1 NO CURRENT 556456 07-05-04 2 1 45 4194304 1 NO INACTIVE 556446 07-05-04 3 1 46 4194304 1 NO ACTIVE 556451 07-05-04
SEQUENCE#が39から47まで進んでいるので、恐らくログスイッチが8回発生したと思われる。
3回の計測結果はこうなった。
- 1回目 00:00:30.04
- 2回目 00:00:35.10
- 3回目 00:00:26.92
平均 30.6秒。
REDOログファイルサイズ50MBで検証
ログファイルサイズ確認
SQL> SELECT * FROM V$LOG; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TI ---------- ---------- ---------- ---------- ---------- ------ ---------- ------------- -------- 1 1 173 52428800 1 NO CURRENT 571394 07-05-04 2 1 172 52428800 1 NO INACTIVE 571351 07-05-04 3 1 171 52428800 1 NO INACTIVE 571312 07-05-04
10万件INSERT
実行後のREDOログファイルを確認すると
SQL> SELECT * FROM V$LOG; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS FIRST_CHANGE# FIRST_TI ---------- ---------- ---------- ---------- ---------- ------ ---------- ------------- -------- 1 1 173 52428800 1 NO CURRENT 571394 07-05-04 2 1 172 52428800 1 NO INACTIVE 571351 07-05-04 3 1 171 52428800 1 NO INACTIVE 571312 07-05-04
SEQUENCE#変わってないのでログスイッチは発生していない。
3回の計測結果はこうなった。
- 1回目 00:00:13.71
- 2回目 00:00:15.01
- 3回目 00:00:13.14
平均 13.9秒。
結構違うもんだ。
すべてのREDOロググループが別々のディスクならここまで差が出ないんだろうか。