【mysql】--MVCC 多版本控制

本文介绍了InnoDB存储引擎中的多版本并发控制(MVCC)机制。MVCC通过保存每行记录的创建时间和过期时间来实现,这些时间被表示为系统版本号而非实际时间。文章详细解释了在Select、Insert、Delete和Update操作中如何利用系统版本号来维护数据的一致性和隔离性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

InnoDB的mvcc,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存行的过期时间(删除时间)。存储的并不是实际的时间,而是系统版本号。每一个新的事物,系统版本号都会递增。 事物开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。

系统版本号:sysNoX

Select: 1 选择版本早于当前事务本版的数据行;  2  行的删除版本要么未定义,要么大于当前事物版本号,确保事务读取到的行,在事务开始之前未删除;
insert:  innoDB确保新的行保存当前系统版本号作为行版本号;
delete: innoDB确保删除的行保存当前系统版本号作为行删除标识;
update:InnoDB 为插入一行新的纪录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为行删除标识。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自驱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值