登录
首页 >  数据库 >  MySQL

Repeatable Read下的MVCC

来源:SegmentFault

时间:2023-02-24 20:55:14 122浏览 收藏

积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Repeatable Read下的MVCC》,就带大家讲解一下MySQL知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

MVCC是Repeatable Read隔离级别才有的,Read Commited没有,所有RC会出现不可重复读的问题。下面关于MVCC的细节进行下转载:

InnoDB的MVCC,通过在每行记录后面保存两个隐藏的列来实现:一个保存了行的创建版本号,一个保存行的删除版本号,每开始一个新的事务,系统版本号就会递增。在RR隔离级别下,MVCC的操作如下:

  • select操作。
    InnoDB只查找版本早于(包含等于)当前事务版本的数据行。可以确保事务读取的行,要么是事务开始前就已存在,或者事务自身插入或修改的记录。
    行的删除版本要么未定义,要么大于当前事务版本号。可以确保事务读取的行,在事务开始之前未删除。
  • insert操作。将新插入的行保存当前版本号为行版本号。
  • delete操作。将删除的行保存当前版本号为删除标识。
  • update操作。变为insert和delete操作的组合,insert的行保存当前版本号为行版本号,delete则保存当前版本号到原来的行作为删除标识。

转载于:mysql的MVCC(多版本并发控制)

今天关于《Repeatable Read下的MVCC》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>