MySQL中的MVCC实现原理与处理流程

1. 什么是MVCC?

MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。它是一种并发控制方法,广泛用于数据库管理系统中,以实现对数据库的并发访问。在编程语言中,它实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库的并发性能,用更好的方式处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。

2. 当前读

select lock in share mode(共享锁)、select for updateupdateinsertdelete(排他锁)这些操作都是当前读。所谓当前读,就是读取记录的最新版本,并在读取时保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。

3. 快照读

不加锁的 select 操作就是快照读,即不加锁的非阻塞读。快照读的前提是隔离级别不是串行级别,串行级别下的快照读会退化成当前读。快照读的出现是为了提高并发性能,基于多版本并发控制(MVCC)实现,可以认为MVCC是行锁的一个变种,但它在很多情况下避免了加锁操作,降低了开销。快照读可能读到的并不一定是数据的最新版本,而有可能是之前的历史版本。

4. 当前读、快照读、MVCC的关系

MVCC多版本并发控制指的是维持一个数据的多个版本,使得读写操作没有冲突。快照读是MySQL为实现MVCC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

搬砖的小熊猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值