トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

トランザクション処理

トランザクション処理に詳しくなろう
http://itpro.nikkeibp.co.jp/article/COLUMN/20080123/291846/

異常なリード

◆ダーティ・リード(未コミット読み取り)

他のトランザクションで更新されて,まだコミットされていないデータを読み取ってしまう。ロールバックされるとありえないデータを読み込んだことになる。


◆ファジー・リード(またはノンリピータブル・リード)

他のトランザクションの更新前とコミット後のデータを読んでしまうことにより一度読み込んだデータを再読み込みすると結果が異なる。


◆ファントム・リード(幻影読み取り)

他のトランザクションがデータの挿入,削除を行うとき,同じ検索条件で読んでいるのに,あったはずの行が消えたり,なかった行が現れたりする。


分離レベル

1. READ UNCOMMITTED

READ UNCOMMITTED(リード・アンコミッテッド)は,最も分離性が低い分離レベルです。他のトランザクションがコミットしていないデータを読み込んでしまいます。図2のダーティ・リード,ファジー・リード,ファントム・リードすべてを許容します。


2. READ COMMITTED

READ COMMITTED(リード・コミッテッド)は,2番目に分離性が低い分離レベルですが,未コミットのデータは読み取りません。具体的にはファジー・リード,ファントム・リードは許しますが,ダーティ・リードは抑止します。


3. REPEATABLE READ

REPEATABLE READ(リピータブル・リード)を指定すると,あるトランザクションが参照したデータは,そのトランクションが終了するまで,他のトランザクションで変更することができなくなります。具体的にはダーティ・リード,ファジー・リードを抑止して,ファントム・リードだけを許可します。


4. SERIALIZABLE

SERIALIZABLE(シリアライザブル)が最も分離性の高いレベルです。ダーティ・リード,ファジー・リード,ファントム・リードのいずれも抑止します。あるトランザクションが参照したデータを変更することができないだけでなく,参照に使用した条件に一致するデータを挿入することもできなくなるわけです。


異常なリードと分離レベル

ダーティー・リード ファジー・リード ファントム・リード
リード・アンコミッティド 許可 許可 許可
リード・コミッティド 抑止 許可 許可
リピータブル・リード 抑止 抑止 許可
シリアライザブル 抑止 抑止 抑止



[カテゴリ: プログラミング全般]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2008年06月26日 22時14分30秒