Gblog

おもにTips

log file sync の調べ方

log file sync をすごく簡単に言うと、、、

 

「コミット時に発生する待機で、LGWRによるREDOログの書込み完了待ち」

 

です。

 

トランザクションがコミットされると、データの整合性が保たれるようREDOログ情報をファイルに書き出す必要があります。

なので、サーバープロセスが commit すると LGWR は REDOログバッファの情報を REDOログファイルに書き出します。

サーバープロセスはそれを待ちます。

 

「commit 時に log file sync で待つ」

 

これは正常な動作です。

 

でも log file sync 待ちが長くなると何か問題があるかもしれません。

 

まずは、log file sync の平均待機時間を確認します。

log file sync の平均待機時間が延びてないなら、回数が増えてます。

裏取りでトランザクション数なんかをチェックします。

 

log file sync の平均待機時間が延びている場合、は大きくは2つのパターンに分類できます。

  • I/O がおそい
    REDOログファイルの書込みに時間がかかって log file sync 待ちが長くなる
  • LGWR が忙しい
    LGWRがサーバープロセスに応答を返すのが遅れて log file sync 待ちが長くなる

 

I/O が遅いかどうかは、log file parallel write をみます。

log file parallel write は LGWR が I/O 待ちの時間です。合計時間でみても判断できないので、平均時間をみてあげます。

log file parallel write の平均待機時間が長い場合は、I/O の観点で調査します。

 

LGWR が忙しい場合は何もできないかもしれませんが、まあ見てみる価値はあるかと思います。

ASH をみると待機や CPU 処理の割合が見えます。変な待機がないか確認ができます。

また、ASH にはアイドルイベントはでてこないので、時間に対して行数が少ない場合は「LGWR、暇かも」といえます。ただ判断には正常時と比較が必要です。

 

 

ちなみに、log file sync がなんか遅かったので調べてみたら LGWR が「SYNC Remote Write」で待ってました。Data Guard の SYNC転送による待機でした。