トランザクション・分離レベル
Oracle において提供されている分離レベルは READ COMMITED(コミット読取り)、SERIALIZABLE(シリアライズ可能)である。さらに 読取り専用モードが用意されている。
READ COMMITTED (コミット読取り)
Oracle のデフォルトの分離レベルである。他の DBMS においても、このレベルがデフォルトが多い。
SERIALIZABLE(シリアライズ可能)
これは簡単に言うとトランザクションをシリアライズ(直列化)。
しかし、すべてのトランザクションを直列化するということは同時に2人使用できないことになるので使い物にならない。
直列化するのは同じデータにアクセスするトランザクションである。しかし Oracle は問い合わせによるロックは発生しないという特徴がある。
文章がうまくまとめられない・・・中断
コミット読取り と シリアライズ可能 の比較
| READ COMMITTED | SERIALIZABLE |
ノン・リピータブル・リード | 発生する | しない |
ファントム・リード | 発生する | しない |
マテリアライズド・ビューの読み取り | ステートメント | トランザクション |
トランザクションにおける読み取り一貫性 | ステートメント単位 | トランザクション単位 |
問い合わせ時に行をロックするか | しない | しない |
先行している競合しているトランザクションがコミット後にエラーが発生するか | 発生しない | しない |
先行している競合しているトランザクションのコミット後に後続のトランザクションにエラーが発生するか | 発生しない | 発生する |
Oracle では行のデータの変更を時系列(システム変更番号(SCN)) を使って複数のバージョンもっている。(マルチバージョンと呼ばれる)
その機能をユーザーに明示的に使用することができるようになった機能が フラッシュバック問い合わせ 機能 である。
つまり、Oracle では過去の任意の時間におけるスナップショットを取得することが可能ということ。
関連事項