2022-八月最新面试题:MySQL锁----MySQL锁有几种?

本文详细介绍了MySQL中的锁类型,包括共享锁(读锁)、排它锁(写锁)、行锁、表锁、记录锁、间隙锁、临键锁以及意向锁。讨论了它们的状态、粒度和作用,帮助理解并发控制和事务一致性。特别提到了在避免死锁和活锁方面的知识,以及不同锁在实际应用中的选择和影响。
摘要由CSDN通过智能技术生成

面试官进程问:所以在这里记录一下,面试官你自己看

讲一下mysql有多少种锁?

我们可以了解到,有死锁,活锁,共享锁,排它锁,行锁,表锁,记录锁,临建锁,间隙锁,意向共享锁,意向排它锁。
一堆记起来,其实对人不是很友好的,所以我们可以先开始做个分类:

锁的分类

从状态划分:共享锁,排它锁
从粒度来划分:行锁,表锁,记录锁,间隙锁,临建锁
从状态来划分:意向共享锁,意向排它锁。
**注意:**死锁和活锁,其实编程方面,并发编程方面,所以这里不录入

01-状态锁-解释:

共享锁,也就是我们常说“ 读锁”,可以共享大家都可以读
排他锁:也就是我们常说“写锁”,为了保持事务一致性,防止脏读,所以写锁有排他性

02-粒度锁-解释:

行锁:表的多行数据锁住,粒度小,所以不容易冲突
表锁:锁住整张表,粒度大,所以容易引发冲突
记录锁:锁住记录,锁住索引记录,而不是真正的数据记录
间隙锁:锁定一个范围,也被称为gap锁,不会阻塞其他gap锁,但会阻塞插入间隙锁,这也是防止幻读的关键:
临建锁:当某个事务持有该数据行的临键锁时,会锁住一段左开右闭区间的数据

03-状态锁

1)意向共享锁(IS锁):事务在请求S锁前,要先获得IS锁
2)意向排他锁(IX锁):事务在请求X锁前,要先获得IX锁

具体可以参考以下博主的文章:

mysql记录锁

详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

意向锁(Intention Lock)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值