mvcc read view

快照读:在RR隔离级别下:快照读有可能读到数据的历史版本,也有可能读到数据的当前版本。所以快照读无需用锁也不会发生幻读的情况。
当前读:select…lock in share mode,select…for update
当前读:update,delete,insert
读取的是记录的最新版本,所以所以就需要通过加锁(行锁 间隙锁 表锁)的方式,使得被当前读读过的数据不能被新增修改或者删除,换句话说再来一次当前读要返回相同的数据。

所以面试问题:mysql如何实现RR的?答案:MVCC + 行锁 + 间隙锁。快照读:mvcc,当前读:行锁 + 间隙锁。

转载:

  1. https://www.cnblogs.com/cswiki/p/15338928.html

  2. https://www.jianshu.com/p/750990ff4317

  3. https://juejin.cn/post/7134186501306318856

  4. https://blog.51cto.com/phyger/5155960

  5. https://juejin.cn/post/6871046354018238472

  6. https://blog.csdn.net/qq_35939417/article/details/112908831

  7. https://blog.csdn.net/qq_42651904/article/details/110622818

  8. https://blog.csdn.net/SnailMann/article/details/94724197

  9. https://www.cnblogs.com/zping/p/13994828.html

  10. https://juejin.cn/post/6871046354018238472

第一篇似乎有点小问题:针对快照读,rr下每次读取使用的是同一个rv,所以实现了重复度,rc下每次读取使用新的rv,所以实现了读提交
而针对当前度,使用了行锁 + 间隙锁 = next-key lock实现重复度

posted @ 2022-01-07 15:57  神一样的存在  阅读(95)  评论(0编辑  收藏  举报