REDOログバッファのチューニング
- バッファサイズの設定
- LOG_BUFFER初期化パラメータ(最小64KB、デフォルト512KB)
- LGWR書込みタイミング
- COMMIT
- バッファの1/3に達したとき
- タイムアウト(3秒)
- DBWnの書込み時
- REDOログバッファの診断
待機イベント (v$session_wait) |
log buffer space | REDOログバッファ書込み速度がREDOログファイル書出し速度より速いため、ログバッファの領域確保を待機している |
システム統計 (v$sysstat) |
redo buffer allocation retries | REDOログバッファの領域確保を待機した回数(空いてるバッファを確保しようとしたら競合した) |
redo log space requests | REDOログファイルへの書出しを待機した回数 | |
redo entries | REDOログエントリ数 |
- チューニング方法
- REDOログサイズを増やす
- トランザクションが大量にある場合や、長い場合はREDOログ・バッファのサイズを大きくすることでREDOログ・ファイルへのI/Oが減少する
- COMMITが頻繁に発生する場合、そのたびにバッファがクリアされるため、REDOログ・バッファのサイズは小さくてよい。ただし、その分、REDOログ・ファイルへのI/Oは増加する。
- REDOログ・バッファのエントリは、DML文またはDDL文が発行されるときに作成され、問い合わせ(SELECT文の発行)の時には基本的には作成されないので、問い合わせの長さはREDOログ・バッファのサイズに影響しない。
- ただし、ディスク・ソートの発生時などには、問い合わせからもREDOログ・バッファが作成されるので、問い合わせの発行がREDOログ・バッファのサイズとまったく無関係だというわけではない。
- REDOログファイルを高速ディスクにする
- REDOログサイズを増やす
- REDOの低減方法
※従来型パスロードは常にREDOログエントリを生成する