mysql-间隙锁高级理解

Next-Key 可以理解为一种特殊的间隙锁,也可以理解为一种特殊的算法。通过临建锁可以解决特殊情况下的幻读问题。 先把会出现幻读记录for update即可利用临建锁解决。还有读提交级别没有间隙锁,只有行锁!!!
每个数据行上的非唯一索引列上都会存在一把临键锁,当某个事务持有该数据行的临键锁时,会锁住一段左闭右开区间的数据。需要强调的一点是,InnoDB 中行级锁是基于索引实现的。生效:for update 或者时 update。注意insert 数据时不会触发的!!!!因为插入不是触发幻读的因果

间隙锁范围
图中的age字段为普通索引
在这里插入图片描述
(-∞, 1],[2],[3],[4],
(10, 18],
(18, +∞]

临键锁只与非唯一索引列有关。在唯一索引列(包括主键列)上不存在临键锁,但是在唯一索引(包括主键,如上图的id)for update 一条不存在的id的话,也会触发间隙锁,看这个id条件在落在哪个范围,这个范围就会被锁住。这一项很重要!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值