ODBI=2 (READ_COMMITTED)
FOR UPDATE WAIT n (X_DBMENV.DAT)
ロックのタイムアウトは、選択オペレーションにのみ設定され、その後は、更新および削除の前の読み取りにのみ設定されます。ロックはすべての選択に望ましくないステートメントに設定されるため、ロックのタイムアウトをそれ以外の選択に設定することはできません。特定のステートメントのみロックされる必要があります。挿入は待機オプションを提供せず、行のロックが解除されるのを待ちます (ブロック)。
WITH_KEY IOアクセス
|
反転表示された2行目と11行目は、Oracleのロックのタイムアウトとは異なることに注意してください。挿入にはタイムアウトを設定できません。トランザクションがコミットされるまでブロックします。
最後のレコード読み取り IO アクセス
アクセスの結果は、更新に使った場合でのロックのタイムアウトとの違いという点において WITH_KEYと同じです。
|
このテストから、OracleがLinuxおよびWindows上で使われている場合は、どちらのプラットフォーム上でもFOR更新オプションを使用するという結論が導かれます。そうしない場合は、ロックのタイムアウトを使います。その場合でも、異なるデータベースが使われる場合は、データベースによってふるまいは異なり、場合によってはあるデータベースに特有のコードが必要になる場合があることに気をつけてください。