小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


【Oracle】REDOログバッファサイズとredo buffer allocation retries

はじめに

先日、Oracle DBにデータをinsertするとき、1件ずつコミットするのと、全部まとめてコミットするのとで、どちらが速いかをサンプルプログラムを作って検証してみました。

全部まとめてコミットした場合、redo buffer allocation retries(REDOログ・バッファへの書込み待機)の数が1件ずつコミットする場合に比べて多くなっていたので、REDOログバッファサイズを変更したら、性能が改善するかもしれないと思いました。

今回は、REDOログバッファサイズをデフォルトの4.7MBと10倍の47MBに変更した場合で性能差を測ってみました。

REDOログバッファサイズの拡張

以下のページを参照してください。

statspack(REDOログバッファ4MB)
Cache Sizes            Begin        End
~~~~~~~~~~~       ---------- ----------
    Buffer Cache:       200M              Std Block Size:         8K
     Shared Pool:       300M                  Log Buffer:     4,784K
statspack(REDOログバッファ47MB)
Cache Sizes            Begin        End
~~~~~~~~~~~       ---------- ----------
    Buffer Cache:       328M              Std Block Size:         8K
     Shared Pool:       144M                  Log Buffer:    47,840K
測定結果
1回目 2回目
REDOログバッファ4MB 8732msec 9750msec
REDOログバッファ47MB 10531msec 9953msec

ほとんど差異が見られませんでした。

Top 5 Timed Events

log buffer spaceは表示されなくなったけど、log file syncとlog file parallel writeの待機イベントで待たされて相殺された感じ。
REDOログバッファ4MB

Top 5 Timed Events                                                    Avg %Total
~~~~~~~~~~~~~~~~~~                                                   wait   Call
Event                                            Waits    Time (s)   (ms)   Time
----------------------------------------- ------------ ----------- ------ ------
CPU time                                                         4          50.1
log file parallel write                             48           1     30   16.8
control file sequential read                       506           1      2    9.5
control file parallel write                         39           1     16    7.5
log buffer space                                     2           1    279    6.6

REDOログバッファ47MB

Top 5 Timed Events                                                    Avg %Total
~~~~~~~~~~~~~~~~~~                                                   wait   Call
Event                                            Waits    Time (s)   (ms)   Time
----------------------------------------- ------------ ----------- ------ ------
CPU time                                                         5          57.9
db file sequential read                            579           2      3   16.8
control file sequential read                       352           1      3   11.7
log file sync                                       18           1     58   11.0
log file parallel write                             69           0      2    1.6


でもredo buffer allocation retriesの数は減ったから、REDOログバッファサイズの変更とredo buffer allocation retriesは関係があることが分かりました。
f:id:replication:20141006124918p:plain

関連記事