MySQL 行级锁(行锁、临键锁、间隙锁)

行级锁是InnoDB存储引擎的特性,锁定粒度最小,提供高并发性。锁包括记录锁、间隙锁和临键锁,其中在可重复读隔离级别下,MySQL使用临键锁防止幻读。非唯一索引的查询可能产生间隙锁或临键锁,而唯一索引查询会直接加记录锁。
摘要由CSDN通过智能技术生成

行级锁

行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。
InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁

1.分类

对于行级锁,主要分为以下三类:
1.记录锁存在于包括主键索引在内的唯一索引中,锁定单条索引记录。
2.间隙锁存在于非唯一索引中,锁定开区间范围内的一段间隔,它是基于临键锁实现的。
3.临键锁存在于非唯一索引中,该类型的每条记录的索引上都存在这种锁,它是一种特殊的间隙锁,锁定一段左开右闭的索引区间。

2.间隙锁

在这里插入图片描述

select * from t where id > 2 and id < 7 for update

间隙锁:(2, 7)区间锁住

2.临键锁

在这里插入图片描述

select * from t where id > 2 and id < 7 for update

临键锁:(2, 7]区间锁住

可重复读级别下为了解决幻读,MySQL默认就是使用的临键锁,当在非唯一索引下如果SQL没有命中记录则就是间隙锁命中了记录就是临键锁。如果用唯一索引且SQL命中了记录,那么加的就是普通记录锁,否则就是间隙锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值