2018.05.16
COMMIT WRITE
目次
- 1. 基本情報
- 2. 注意
- 3. 関連情報
基本情報
パラメータ情報
Syntax : COMMIT_WRITE = {IMMEDIATE | BATCH},{WAIT |NOWAIT} Default : IMMEDIATE, WAIT 設定方法 : Parameter File ALTER SYSTEM SET COMMIT_WRITE = BATCH, NOWAIT ALTER SESSION SET COMMIT_WRITE = BATCH, NOWAIT COMMIT WRITE BATCH NOWAIT
サポート : 10gR2
説明
TransactionのCommitの実行時にRedo Writeを実行する方法を決定します。ユーザーがCommitを実行すると、OracleはRedo Bufferの変更履歴をRedo Logに即座に(IMMEDIATE)記録し、実際のRedo Logに記録されるまで待ちます(WAIT)。この実行方法は、ユーザーによるデータの変更履歴がRedo Logに記録されて事後Recoveryに使用することがあることを100%保証するためです。 COMMIT_WRITEパラメータを使用すると、これらのRedo Log記録方式を変更することができます。可能な組み合わせは、以下の通りです。
・IMMEDIATE + WAIT:基本方式でRedo Writeをすぐに要求して記録が終わるまで待ちます。 ・IMMEDIATE + NOWAIT:要求はすぐに送信され、記録が終わるのを待たずに、ユーザーに制御を渡します。 ・BATCH + WAIT:複数のRedo Write要求を集めて一度に要求し、記録が終わるまで待ます。 ・BATCH + NOWAIT:複数のRedo Write要求を集めて一度に要求し、記録が終わるのを待たずに、ユーザーに制御を渡します。
注意
COMMIT_WRITEとOLTP/ DSS
OLTP環境では、COMMIT_WRITEパラメータを変更してはいけません。BATCHやNOWAITモードのCommitでRedo Logにデータが正確に保存される保証がないため、異常終了時のデータの整合性を保証することはできないのです。
DSS環境では、データの細かい整合性が不要な場合が多いため、パフォーマンスを向上させるために、このパラメータを積極的に活用することができます。
PL/SQLのAsynchronous Commit
PL/SQLブロック内のCommit要求はまるでBATCH、NOWAITモードのCOMMIT_WRITEパラメータを使用するのと同じ効果があります。これAsynchronous Commitと呼びます。したがってバッチジョブを処理する場合には、PL/SQLを使用することが性能面で有利です。
関連情報
1. log file sync待機イベント