トランザクション
恥をかいたついでに、トランザクションについて復習。
ACID 特性
トランザクション処理が満たさなければいけない4つの特性。
分離レベル
- Read Uncomitted
… コミット前のデータが読み込まれてしまう。 - Read Comitted
… 同じデータを複数回読み込んだ場合、異なるデータが返ることがある。 - Repeatable Read
… 別トランザクションが追加したデータが読めてしまう。 - Serializable
… ACID 特性がすべて保障される。
Oracle と Oracle 以外の DBMS との違いですが、Oracle が Read Comitted と Serializable しかサポートしないというのはあまり重要とは思っていなくて、分離レベルを実現するために、Oracle 以外が共有ロックを使用するのに対して、Oracle はロールバックセグメント内の文あるいはトランザクション開始時のデータを使用しているという点。共有ロックを使用しない分、Oracle の方が同時実行性は高いと言えます。
それ以上でも、それ以下でもない。この一番最後の点をなぜかカン違いしていた模様...(^^;)