Ru-读未提交
- 事务内未提交的内容也会被读到
Rc-读提交
- 事务必须提交才会被其他事务读到
Rr-可重复读
- 事务内的重复读一定是一致的,mysql使用版本控制的方式保证重复读的一致性;
- select操作并不会加锁,update操作会加上行锁,如果两个事务顺序相反的执行两个update,就可能导致死锁;
- 可重复读的实现采用了快照方式保证,如果update影响行会更新最新的快照,导致不可重复读;
- 快照读的快照在第一次执行select的时候生成,并非再事务开始时生成;
Sr-顺序读
独享锁-悲观锁
- select for update 实现独享锁
共享锁
乐观锁
- 乐观锁不是mysql实现的,需要通过版本字段实现