
log buffer space - 日本エクセム株式会社 Oracle待機イベント情報
目次[非表示]
- 1.基本情報
- 2.待機パラメータと待機時間
- 3.チェックポイントとソリューション
- 3.1.REDOログ・バッファを充分な大きさにする
- 3.2.REDOエントリの生成量を最小限にする
- 3.3.LGWRの性能を改善させましょう
基本情報
REDOログ・バッファにREDOレコードを記録するプロセスは、REDOログ・バッファ内に必要なスペースを確保するためにREDOアロケーション・ラッチの獲得が必要とされます。
REDOアロケーション・ラッチを獲得した後、REDOログ・バッファに空き領域がない場合、スペースが確保できるまで待機します。この時、状況により2種類のイベント待機が発生します。
前者の場合、ログ・スイッチが実行された直後、log buffer spaceの待機が急増する可能性があります。これはREDOログ・バッファに記録しようとする多数のセッションがログ・スイッチが終了するまで待機し、その後同時に記録しようとするためです。
待機パラメータと待機時間
待機パラメータ
log buffer spaceの待機イベントは待機パラメータを使用しません。
待機時間
一般的には1秒ですが、log file switchが発生した場合は5秒間待機します。
チェックポイントとソリューション
REDOログ・バッファを充分な大きさにする
log buffer spaceの待機はトランザクションによって生成されるREDOの量に比べ、REDOログ・バッファのサイズが小さい時に発生します。従って、log buffer spaceの待機が広い範囲で発生した場合、REDOログ・バッファのサイズを調査し必要に応じてサイズを調整します。
log buffer space 待機と log file switch completion待機が同時に発生した場合はREDOログ・バッファのサイズと同時に、REDOログ・ファイルのサイズも確認する必要があります。
大概の場合、この2つの待機が同時に発生します。
REDOログ・ファイルのサイズがあまりにも小さい場合、log file switch completionの待機が増加し、ログ・スイッチが終了した直後、再びlog buffer spaceの待機が発生します。log buffer spaceの待機を減らすためにREDOログ・バッファのサイズを大きくした場合、log file syncの待機が増加することがありますが、この現象を解決するためには、REDOログ・バッファのサイズとlog file syncのイベントを参考にしてください。
REDOログ・バッファの大きさによってlog buffer spaceの待機がどのように現れるかについて確認してみましょう。テストのシナリオは次のようになります。
<13万行程のデータを持ったtestテーブルに対し、UPDATEを実行します>
・ケース1:REDOログ・バッファの大きさを256KBに指定します
・ケース2:REDOログ・バッファの大きさを5MBに指定します
2つのケースにおいてlog buffer spaceの待機がどのように発生するかを確認します。
ケース1:REDOログ・バッファのサイズが256KBと、非常に小さく設定されている場合
ケース2:REDOログ・バッファのサイズが5MBと、大きく設定されている場合
テストの結果から、REDOログ・バッファのサイズがlog buffer spaceのイベント待機に大きな影響を与えることがわかりました。
REDOエントリの生成量を最小限にする
log buffer space待機を減らすもう一つの方法として、REDOエントリの生成量を最小限にする方法があります。ダイレクト・ロード機能を適切に活用しつつ、nologging optionを与える、等の方法もこれに当たります。
詳しい内容はlog file sync#REDOデータ量とlog file sync待機イベントをご参照ください。
LGWRの性能を改善させましょう
log buffer space待機とfree buffer waits待機は特長が似ています。サーバープロセスのFree bufferが要求するスピードに対して、DBWRプロセスが遅れてしまうことが原因でfree buffer waits待機が発生するように、サーバープロセスのfree redo buffer領域が要求するスピードにLGWRプロセスがついていけないことから、log buffer spaceが発生します。