トランザクション管理
ACID 特性
を満たす必要がある.
Atomicity
処理が
all or nothing
になること. 成功なら完全に成功,失敗なら もともとそのような操作が行われなかったのと同じ状態になっていること. 中途半端に実行された状態になってはいけない.
Consistency
トランザクションの前後で正常状態(データの一貫性)が維持されること.
Isolation
並行して実行されている他のトランザクションの影響を受けないこと.
Durability
障害などで正しい状態が失われないこと.
トランザクションの基本命令
begin
トランザクションの開始を宣言
commit
処理を確定する
abort
処理を放棄し,トランザクション開始前の状態にもどす
end
トランザクションの終了を宣言(必須ではない)
隔離性水準
dirty read
まだコミットされてないデータを読んでしまいました(読めてしまいました)
. ミクロなデータでは DBMS の機能で dirty read は起こらなくなっているけど,マクロレベルではプログラムのミスにより起こる場合がある.いくつかの操作をやって全部成功したときにはじめてトランザクション全体が成功になる場合に,誤って各細分手順で細かく commit してしまうことが原因.
繰り返し不能 read
同じデータを2回読んでみたんだけど,初回と今回で違う結果になってる!
phantom
あれ,さっきまであったレコードがないよ?
Links
[1]
宇陀則彦:データベース(第7回)
,2008-06-09.[
cache
]
はたいたかし
http://exlight.net/
2011-12-01
Home
>
開発関連のメモ
>
DB
>
transaction