博客
关于我
[MySQL] MVCC 多版本并发控制实现的事务
阅读量:661 次
发布时间:2019-03-15

本文共 745 字,大约阅读时间需要 2 分钟。

InnoDB引擎中的MVCC(Multi-Version Concurrency Control)是一种用于处理多版本并发控制的高级事务管理机制。通过为每行记录维护多个版本号,MVCC能够在读写频繁的高并发场景下提供较高的性能,同时保证事务的一致性和隔离性。

MVCC工作机制基于每个事务的版本号来维护行记录的可见性和一致性。当事务开始时,系统会为当前用户生成一个唯一的版本号,这个版本号会被同步到所有被修改的行记录中。通过在每行记录中添加两个隐藏字段:"创建版本号"和"删除版本号",MVCC可以精确控制数据的可见性:

  • 在插入新数据时,系统会将当前事务的版本号写入"创建版本号"字段。
  • 在更新操作时,系统会将当前事务的版本号写入"删除版本号"字段,并且将旧版本号设置为当前事务的版本号。
  • 在删除操作时,系统只需要将"删除版本号"字段设置为当前事务的版本号,无需修改其他数据。
  • 在查询操作时,系统会根据事务版本号来筛选数据:创建版本号必须小于等于当前事务版本号,且删除版本号必须存在或小于当前版本号。这保证了查询得到的数据要么是当前或之前版本的数据。

这种设计可以避免传统锁机制对并发操作的阻塞,显著提升了系统的并发处理能力。然而,这也意味着额外的存储开销(隐藏字段的使用)以及在特定场景下可能需要加锁(如在SERIALIZABLE隔离级别下)的问题。

MVCC机制适用于REPEATABLE READ和READ COMMITTED隔离级别。在READ UNCOMMITED隔离级别下,MVCC会直接读取最新的数据版本,而在SERIALIZABLE隔离级别下,系统会对读取的行加锁,确保数据的一致性。这种灵活的并发控制机制使得InnoDB在高并发场景下能够在性能和一致性之间找到较好的平衡。

转载地址:http://tqnmz.baihongyu.com/

你可能感兴趣的文章
Nacos服务注册与发现的2种实现方法!
查看>>
nacos服务注册和发现原理简单实现案例
查看>>
Nacos服务注册总流程(源码分析)
查看>>
nacos服务注册流程
查看>>
Nacos服务部署安装
查看>>
nacos本地可以,上服务器报错
查看>>
Nacos注册Dubbo(2.7.x)以及namespace配置
查看>>
Nacos注册中心有几种调用方式?
查看>>
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
查看>>
nacos看这一篇文章就够了
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>
Nacos编译报错NacosException: endpoint is blank
查看>>
nacos自动刷新配置
查看>>
nacos运行报错问题之一
查看>>