日期:2014-05-16  浏览次数:20461 次

数据库事务与隔离事例

?

大家都知道,数据 的四大特性 ACID Atomic, Consistency, Isolation, Durability ), 里主要考 一致性和隔离性。 了提高事 理效率,通常并 行多个事 就是数据 中非常重要的 控制 简单 ,并 行事 ,会有以下 问题

  • (Write Lost) :比如事 A x 更新 10 ,然后事 A y 更新 20 这时 A 重新 x 发现 自己更新 的数据似乎不 了。
  • 脏读 (Dirty Read) :比如事 A 的未提交( 依然 存)的数据被事 B 走,如果事 A ,会 致事 B 取的的数据是 错误 的;
  • 不可重复 (Non-repeatable Read) :比如事 A 中两 处读 取数据 total 。在第一 候, total 100 ,然后事 B 就把 total 的数据改成 200 ,事 A 一次, 果就 发现 total 竟然就 200 了,造成事 A 数据混乱。
  • 幻象 (Phantom Read) :和 Non-Repeatable Read 相似,也是同一个事 中多次 不一致的 问题 。但是 Non-Repeatable Read 的不一致是因 他所要取的数据集被改 了(比如 total 的数据),但是 Phantom Read 所要 的数据的不一致却不是他所要 的数据集改 ,而是他的条件数据集改 。比如 Select account.id where account.name="ppgogo*", 第一次 去了 6 个符合条件的 id ,第二次 取的 候,由于事 b 把一个 号的名字由 "dd" 改 成 "ppgogo1" 果取出来了 7 个数据。