关于Innodb如何在RR级别下解决幻读的理解
来源:1-8 【经验分享群讨论】如何快速涨薪,在中小厂成为Leader?

Thorn4874674
2021-04-09
老师我理解的是应该从两个方向来考虑这个问题
Mysql的两种不同读写方式
快照读
select … from …
当前读
select … from … for update
select … from … in share mode
update …
delete …
如何解决幻读的
1. 快照读
多版本并发控制(MVCC)
通过对数据行和事务都增加版本副本,事务每次都会从创建版本小于当前事务版本的数据版本取数据 无锁操作
2. 当前读
next - key 锁
行锁 间隙锁 (insert操作) 记录锁是加在索引上的锁,间隙锁是加在索引之间的。 本质上就是通过加锁来使得事务串行化
写回答
1回答
-
同学,虽然网上很多材料讲到间隙锁的目标是为了解决幻读。但是我自己的看法,mvcc已经解决了幻读问题,for update语句的目的是锁定更新。如果没有mvcc9 ,那么for update语句解决的依然是锁,或者消除了幻读。但是总体来说,从原理分析mvcc性能更好。
10
相似问题