什么是间隙锁?

IT开发技术哲理 专栏收录该内容
212 篇文章 1 订阅

什么是间隙锁?

间隙锁是一个在索引记录之间的间隙上的锁。这是mysql数据库中的一种锁,它会出现在如下场景中,我们向表中新增一条数据age=20,这条数据在本来是没有的,在insert还没有提交的时候去select * from tableA a where a.age>15 and a.age<25,这个时候就会触发间隙锁,我们必须等待insert提交后才能执行select语句。

为什么会出现间隙锁?

在MySQL的innoDB引擎中,如果操作的是一个区间的数据,会锁住这个区间所有的记录,即使这个记录不存在,这个时候另一个会话去插入这个区间的数据,就必须等待上一个结束。
在这里插入图片描述
间隙锁的作用

保证某个间隙内的数据在锁定情况下不会发生任何变化。比如mysql默认隔离级别下的可重复读(RR)。 ps: 可重复读(RR):在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。

当使用唯一索引来搜索唯一行的语句时,不需要间隙锁定。如下面语句的id列有唯一索引,此时只会对id值为10的行使用记录锁。

select * from t where id = 10 for update;// 注意:普通查询是快照读,不需要加锁。如果,上面语句中id列没有建立索引或者是非唯一索引时,则语句会产生间隙锁。
在这里插入图片描述

  • 2
    点赞
  • 2
    评论
  • 12
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"> </span></p><p> <strong>课程介绍</strong> </p> <p> <br /></p> <p> 课程总计41课时,从什么事务讲起,直到分布式事务解决方案,绝对的0基础入门到精通系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 </p> <p> <br /></p> <p> 彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 </p> <p> <br /></p> <p> 实战讲解数据库事务的5种并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读 </p> <p> <br /></p> <p> 彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 </p> <p> <br /></p> <p> 彻底搞清楚MySQL的各种:行、表、共享、排它、Next-Key间隙、X、S、IS、IX、死、索引与、意向等。 </p> <p> <br /></p> <p> 彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED </p> <p> <br /></p> <p> 分布式事务的理论基础:RPC定理、BASE理论、XA协议都什么,原理什么,有什么关联关系。 </p> <p> <br /></p> <p> 分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 </p> <p> <br /></p> <p> 阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 </p> <p> <br /></p> <p> <strong>课程资料</strong> </p> <p> <br /></p> <p> 课程附带配套2个项目源码 </p> <p> <br /></p> <p> 72页高清PDF课件一份 </p> <p> <br /></p> <p> 阿里巴巴seata-1.1.0源码一份 </p> <p> <br /></p> <p> 阿里巴巴seata-server安装包一份 </p> <p> <br /></p> <p> <strong>学习方法</strong> </p> <p> <br /></p> <p> 对于前半部分可以在地铁上学习,对于数据库的事务本质、ACID特性深入掌握。 </p> <p> <br /></p> <p> 课程全程都有实操,最好的方式为对照视频,参考代码,边看边操作 </p> <p> <br /></p> <p> 对于分布式事务参照课程案例,自己也搭建一套微服务的分布式事务环境进行练习 </p> <br /> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242251706.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242358183.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242474239.jpg" alt="" /><br /></span> </p> <p> <span style="color:#666666;font-size:14px;background-color:#FFFFFF;"><img src="https://img-bss.csdn.net/202003260242553783.jpg" alt="" /><br /></span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值