在可重复读隔离级别下,MVCC机制在增删改查操作下分别按照如下方式实现:
1.当前操作是 select 操作时,InnoDB存储引擎只会查找版本号小于或者等于当前事务版本号的数据行,这样可以保证事务读取的数据行要么之前就巳经存在,要么是当前事 务自身插入或者修改的记录。另外,行的删除版本号要么未定义,要么大于当前事务的 版本号,这样可以保证事务读取的行在事务开始之前没有被删除。
2.当前操作是 insert 操作时,将当前事务的版本号保存为当前行的创建版本号。
3.当前操作是delete操作时,将当前事务的版本号保存为删除的数据行的删除版本号,作为行删除标识。
4.当前操作是 update 操作时,InnoDB 存储引擎会将待修改的行复制为新的行,将当前事务的版本号保存为新数据行的创建版本号,同时保存当前事务的版本号为原来数据行 的删除版本号。
资料来源:《深入理解分布式事务:原理与实战》,下载链接为:https://developer.aliyun.com/topic/download?id=8201。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。