mysql MVCC学习 (参考Java架构师迪迦bilibili视频)

MVCC(多版本并发控制)在MySQL的InnoDB引擎中用于实现RC和RR隔离级别,通过ReadView来判断记录是否可见。在快照中,事务开始后其他事务提交的记录以及未提交的活跃事务记录都无法查看。MVCC能避免锁定,提高并发性能。间隙锁防止插入操作,防止幻读。在没有锁的情况下,MVCC是查询的首选。
摘要由CSDN通过智能技术生成

mysql有三行隐藏列:             row_id              事务版本id          创建版本id      

事务二当中,在第一次查询时开启了一个快照。所以id为3 名字为tom的那行记录 插入的时候的创建版本是3,所以在本快照里是没有的,所以查不到。

那么总结一下 ,在 mvcc 中,什么样的记录在快照中查不到呢,

1、在建立快照之后 别的事务commit的事件无法查看到。

2、在建立快照的时候,状态是活跃状态(还未commit)的事务,也是无法在快照中查看的。

注意:  本事务的修改是可以查看的!!

实现方法:

ReadView:事务ID的列表(当前活跃的事务ID)  + .根据undo log 链循环获取上一个版本.

mvcc 只能在RC RR 中使用

如果没有锁  就会使用mvcc,那查询的时候有些什么锁呢!

 间隙锁最大的作用:阻塞插入!!

 等于前两种锁 同时使用~

 参考视频连接:停止你的低效学习!MySQL全系教程,两天我就学完了别人学半个月的内容_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值