MVCC 是什么

MVCC(Multi-Version Concurrency Control):

  • 多版本并发控制,主要是为了提高数据库的并发性能
  • 在很多情况下为了避免加锁,大都实现了非阻塞的读操作,写操作也只需要锁定必要的行
  • innodb的mvcc通过在每行记录后面保存2个隐藏的列来实现
    1. 这2个列一个保存了行的创建时间,一个保存行的过期时间
    2. 但是存储的不是实际的时间值,而是系统的版本号,每开始一个新的事务,系统版本号都会自动递增,事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较
  • mvcc只能在READ COMMITTED和REPEATABLE READ两个隔离级别下工作,因为READ UNCOMMITTED总是读取最新的数据行,而不是符合当前事务版本的数据行,而SERIALIZABLE则是对所有读取的行都加锁

全网最全的一篇数据库MVCC详解,不全我负责

posted @ 2022-03-09 17:32  张三丰学Java  阅读(259)  评论(0编辑  收藏  举报