当前位置:   article > 正文

MySQL中的行锁_mysql 行锁的范围是左开右闭

mysql 行锁的范围是左开右闭
1、行锁分类
  • 1、记录锁:即锁住记录本身

  • 2、间隙锁:锁住一段没有记录的间隙,可以是两条记录的中间部分,也可以是第一条记录的前置部分或最后一条记录的后续部分

    • 2.1 需要注意的是,间隙锁仅仅是阻塞对该间隙进行插入操作,而不阻塞对该间隙的查询操作;如有表tab,有索引idx,对(5,10)加入间隙锁,执行下面两条命令:
    • insert into tab (idx) values(7); 阻塞
    • select * from tab where idx = 7 for update; 不阻塞但无数据
  • 3、next-key锁:是记录锁与间隙锁的结合,特点为左开右闭,如(4,10],由间隙锁(4,10)和记录锁idx = 10组成

2、唯一索引的加锁规则
  1. 等值查询:
  • 若查询记录存在则将next-key锁退化成记录锁,只锁住查询的记录;
  • 若查询记录不存在,则next-key锁退化为间隙锁,锁住记录所在空隙,此处空隙是指与所查询记录(如果存在的话)相邻的两条记录之间的空隙,这两条记录除了可以是数据库表中实际存在的,也可以是其他记录拟插入的(执行了插入sql但是未提交或回滚事务,因为其他事务的插入操作加了记录锁,故而将间隙分为两半)
  • 第二种情况中,若其他事务拟插入的
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/998408
推荐阅读
相关标签
  

闽ICP备14008679号