一个示例让你理解mvcc

探讨此问题之前,需要了解mysql底层知识。

mysql并发场景

读读场景

线程A和B同时进行读操作,此时不会产生并发问题

读写场景

线程A和B分别进行读操作和写操作;
此时产生两个问题:事务隔离性问题和脏读、幻读、不可重复读问题

写写场景

线程A和B同时进行写操作;此时产生问题:数据丢失问题。
用乐观锁和悲观锁解决写写冲突。

什么是mvcc

mvcc是为了解决事务操作中并发安全问题的无锁并发控制技术,就是上述的读写场景,通过undo日志和readView实现。

readVies结构

在这里插入图片描述

示例

一条数据,id=1088,value=张三
a线程update value = 张小三
b线程update value = 张老三
c线程读id=1088

abc线程同时开启,不论ab线程事务是否提交,c线程读的value都是张三,因为c线程事务生成的readView一致,读取的undolog数据一样。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值