当前与快照读
mysql的幻读处理机制
参考Mysql(Innodb)如何避免幻读
我在mysql 8.0.15验证过文中的实验1-5。
- 对于3,mysql确实通过快照机制来避免幻读(但RR对当前读无效)
- 对于4,对于带有索引的属性的
select for update
,确实会采用next-key lock
,来避免幻读。 - 对于5,确实当属性是主键时,
next-key lock
会降级为record lock
因此,从实验4、5得出结论,事务中使用select for update
(该语句是当前读)时,如果是普通索引,则是next-key lock
,如果是主键,则是record lock
。
关于next-key lock
,可以再看InnoDB Next-Key Lock浅析
),作者进行了几个实验,验证该机制的存在。
网友评论