首页 > 编程知识 正文

间隙锁为什么要锁范围,间隙锁区间

时间:2023-05-06 00:32:02 阅读:275464 作者:1334

什么是间隙锁?
间隙锁是一个在索引记录之间的间隙上的锁。

间隙锁的作用
保证某个间隙内的数据在锁定情况下不会发生任何变化。比如mysql默认隔离级别下的可重复读(RR)。

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

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

如果,搜索条件里有多个查询条件(即使每个列都有唯一索引),也是会有间隙锁的。

需要注意的是,当id列上没有索引时,SQL会走聚簇索引的全表扫描进行过滤,由于过滤是在MySQL Server层面进行的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。