博客
关于我
[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/

你可能感兴趣的文章
POI导出Excel2003
查看>>
POI数据获取及坐标纠偏
查看>>
Quartz入门看这一篇文章就够了
查看>>
POI解析Excel【poi的坑——空行处理】
查看>>
POI:POI+JXL实现xls文件添加水印
查看>>
POI:POI实现docx文件添加水印
查看>>
POJ 1006
查看>>
Quartz中时间表达式的设置-----corn表达式
查看>>
poj 1035
查看>>
POJ 1061 青蛙的约会 (扩展欧几里得)
查看>>
Quartz2.2.1简单使用
查看>>
POJ 1080 Human Gene Functions(DP:LCS)
查看>>
Quant 开源项目教程
查看>>
POJ 1088 滑雪
查看>>
POJ 1095 Trees Made to Order
查看>>
POJ 1113 Wall(计算几何--凸包的周长)
查看>>
poj 1125Stockbroker Grapevine(最短路)
查看>>
Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
查看>>
poj 1151 (未完成) 扫描线 线段树 离散化
查看>>
POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
查看>>