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

你可能感兴趣的文章
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
mxGraph改变图形大小重置overlay位置
查看>>
MongoDB学习笔记(8)--索引及优化索引
查看>>
MQTT工作笔记0009---订阅主题和订阅确认
查看>>
ms sql server 2008 sp2更新异常
查看>>
MS UC 2013-0-Prepare Tool
查看>>
msbuild发布web应用程序
查看>>
MSB与LSB
查看>>
MSCRM调用外部JS文件
查看>>
MSCRM调用外部JS文件
查看>>