トップ 一覧 置換 検索 ヘルプ RSS ログイン

トランザクション処理の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
トランザクション処理に詳しくなろう
http://itpro.nikkeibp.co.jp/article/COLUMN/20080123/291846/

!異常なリード
◆ダーティ・リード(未コミット読み取り)
{{div_begin class="pre"}}
他のトランザクションで更新されて,まだコミットされていないデータを読み取ってしまう。ロールバックされるとありえないデータを読み込んだことになる。
{{div_end}}

◆ファジー・リード(またはノンリピータブル・リード)
{{div_begin class="pre"}}
他のトランザクションの更新前とコミット後のデータを読んでしまうことにより一度読み込んだデータを再読み込みすると結果が異なる。
{{div_end}}

◆ファントム・リード(幻影読み取り)
{{div_begin class="pre"}}
他のトランザクションがデータの挿入,削除を行うとき,同じ検索条件で読んでいるのに,あったはずの行が消えたり,なかった行が現れたりする。
{{div_end}}

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

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

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

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

!異常なリードと分離レベル
,,ダーティー・リード,ファジー・リード,ファントム・リード
,リード・アンコミッティド,許可,許可,許可
,リード・コミッティド,抑止,許可,許可
,リピータブル・リード,抑止,抑止,許可
,シリアライザブル,抑止,抑止,抑止

{{category プログラミング全般}}


{{category2 プログラミング全般}}