五、拓展1、当前读读取的是最新版本的记录,读取时还要保证其它并发事务不能修改当前记录,会对读取的记录进行加锁
- 共享锁:select lock in share mode
- 排它锁:select for update 、update、 insert 、delete
2)为什么会出现快照读?【一篇了解全MVCC】是基于提高并发性能的考虑,快照读是基于多版本并发控制,即MVCC,可以认为MVCC是行锁的一个变种,但它在很多情况下,避免了加锁操作,降低了开销;
3)存在问题
- 基于多版本,读到的并不一定是数据的最新版本,可能是之前的历史版本
- 串行级别下的快照读会退化成当前读
- 在RC级别下,事务中,每次快照读都会新生成一个快照和Read View,这就是我们在RC级别下的事务中可以看到别的事务提交的更新的原因
- 在RR级别下,某个事务的对某条记录的第一次快照读会创建一个快照(Read View),将当前系统活跃的其他事务记录起来,此后在调用快照读的时候,还是使用的是同一个Read View,所以只要当前事务在其他事务提交更新之前使用过快照读,那么之后的快照读使用的都是同一个Read View,之后的修改对其不可见
4、 RR级别下怎么避免幻读
- 快照读,和避免不可重复读原理一样,可以避免幻读
- 当前读,因为每次都是读取新的快照,如果需要避免,可以通过加锁限制新增或删除相同条件的数据
经验总结扩展阅读
- 祝体育生高考的祝福语
- 支付宝小鸡今日答题答案大全
- 祝福语大全五一节
- 最新给别人生日祝福语大全
- 最新爸爸生日祝福语大全
- 2023年放假时间表全年 2023年老黄历最准确版本
- 2023年节日大全及时间一览表 今年法定节假日查询
- 十二生肖2023小年转运法大全!
- 真味小厨王全体演员表介绍?
- 英雄联盟手游10月全场半价活动内容介绍