Oracleのserializable

トランザクション内ではSELECT時のデータを保証する
同じレコードに更新が複数からあった場合、先勝ち後負け(ORA-08177: このトランザクションのアクセスをシリアル化できません)
SELECT FOR UPDATEと同じ動作ではない(SELECT時にロックかからない・更新待ちにならず、即座にORA-08177が返される)


FOR UPDATEのSELECTでなければ、READ COMMITTEDでもSERIALIZABLEでもREADロックはかからない。
それはSCNによるバージョニング機構を持っているから。


DB2はバージョニングがないので、READ UNCOMMITTED以外ではREADロックを掛ける。(READ COMMITTEDではレコードが読めたらロック解除する、他の2つはトランザクション終了までロックを保持する)