MVCC多版本并发控制

https://www.jianshu.com/p/8845ddca3b23

  • 前提概要
    • 什么是MVCC
    • 什么是当前读和快照读?
    • 当前读,快照读和MVCC的关系
  • MVCC实现原理
    • 隐式字段
    • undo日志
    • Read View(读视图)
    • 整体流程
  • MVCC相关问题
    • RR是如何在RC级的基础上解决不可重复读的?
    • RC,RR级别下的InnoDB快照读有什么不同?
  • 快照读
    像不加锁的select操作就是快照读,即不加锁的非阻塞读;快照读的前提是隔离级别不是串行级别,串行级别下的快照读会退化成当前读;之所以出现快照读的情况,是基于提高并发性能的考虑,快照读的实现是基于多版本并发控制,即MVCC,可以认为MVCC是行锁的一个变种,但它在很多情况下,避免了加锁操作,降低了开销;既然是基于多版本,即快照读可能读到的并不一定是数据的最新版本,而有可能是之前的历史版本

说白了MVCC就是为了实现读-写冲突不加锁,而这个读指的就是快照读, 而非当前读,当前读实际上是一种加锁的操作,是悲观锁的实现




posted @ 2021-07-12 11:33  小蚊子大人KN  阅读(41)  评论(0编辑  收藏  举报