书上讲, 当数据库隔离级别为1级 read uncommit时, 一个事务可以访问其他事务修改未提交或插入未提交的数据. 当一个事务开始写, 就不允许其他事务同时写. read uncommit可以避免第一类更新丢失, 也就是一个事务回滚会覆盖其他事务已提交的数据.
假如有A,B两个事务并发执行, 当A提交一个数据之后, B也提交了数据, 此时A回滚, 不就会覆盖B的数据吗, 这也就是造成了更新丢失.
我不知道该怎么理解read commit可以避免更新丢失, 还是我想的这个例子有问题?还是说书上讲的是错误的?
read commit情况下会有锁控制提交,同时有『快照读』处理纯select操作。针对4种不同的隔离级别mysql进行的锁处理和细节,有一篇文章介绍的很详细,例子也很清楚,可以看看这篇文章(原博主的博客现在访问出现问题,找了一篇转载的):http://blog.sae.sina.com.cn/archives/2127