码迷,mamicode.com
首页 > 数据库 > 详细

InnoDB实现MVCC原理

时间:2018-09-20 23:30:07      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:并发控制   比较   版本控制   htm   vcc   spi   asp   保存   多版本   

? MVCC(Multi-Version Concurrent Control),即多版本并发控制,通过保存数据在某个时间点的快照来实现,因此每个读操作都会看到一个一致性的视图,并且可以实现非阻塞的读。MVCC允许数据具有多个版本,这个版本可以是时间戳或者是全局递增的事务ID,在同一个时间点,不同的事务看到的数据是不同的。

 

InnoDB实现MVCC原理:

InnoDB会为每一行数据添加两个隐藏字段,分别表示该行创建的版本号和删除的版本号,这两个版本号填入的是系统版本号,随着事务的创建不断递增。(事务开始时刻的系统版本号就是事务的版本号)。通过每行数据的(创建版本号/删除版本号)与新事务的当前版本号比较来实现数据版本控制。

  • select:满足以下两个条件innodb会返回该行数据:
    • 该行的创建版本号小于等于当前版本号,保证改行在当前版本之前已经被插入
    • 该行的删除版本号大于当前版本或者为空。删除版本号大于当前版本意味着当前版本并未执行该行的删除操作
  • insert:将新插入的行的创建版本号设置为当前系统的版本号,说明该行在当前版本被插入
  • delete:将要删除的行的删除版本号设置为当前系统的版本号,说明该行在当前版本被删除
  • update:不执行原地update,而是转换成insert + delete。将旧行的删除版本号设置为当前版本号,并将新行insert同时设置创建版本号为当前版本号

执行insert、delete和update都要将系统版本号递增。

技术分享图片

 

 

参考:https://www.cnblogs.com/aspirant/p/6920987.html

 

InnoDB实现MVCC原理

标签:并发控制   比较   版本控制   htm   vcc   spi   asp   保存   多版本   

原文地址:https://www.cnblogs.com/delav/p/9683908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!