当前位置: 首页 > article >正文

MySQL什么情况下会加间隙锁?

目录

一、使用范围条件查询

二、唯一索引的范围查询

三、普通索引的查询

四、间隙锁的锁定规则

五、间隙锁的影响


间隙锁(Gap Lock)是MySQL中的一种锁机制,主要用于防止幻读现象。在MySQL的InnoDB存储引擎中,当事务隔离级别设置为可重复读(Repeatable Read)时,间隙锁可能会被触发。以下是一些具体情况下会加间隙锁的情形:

一、使用范围条件查询

当执行SELECT ... FOR UPDATEUPDATEDELETE语句时,如果查询条件使用了范围条件(如><BETWEEN等),并且这些条件涉及到了索引(普通索引或唯一索引的部分列),那么InnoDB会对符合条件的已有数据记录的索引项加锁,同时还会对键值在条件范围内但并不存在的记录(即“间隙”)加锁。

例如,执行以下语句:

SELECT * FROM employees WHERE id BETWEEN 10 AND 20 FOR UPDATE;

如果id列上存在索引,那么InnoDB不仅会对id值为10到20的记录加锁,还会对id值大于10且小于20的间隙加锁,以防止其他事务在这些间隙中插入新的记录。


http://www.kler.cn/a/459162.html

相关文章:

  • 2024年12月个人工作生活总结
  • Word如何插入图片并移动到某个位置
  • 数据中台与数据治理服务方案[50页PPT]
  • MySQL与标准SQL的区别
  • 基于深度学习的视觉检测小项目(二) 环境和框架搭建
  • 【MATLAB APP Designer】小波阈值去噪(第一期)
  • 使用 AI Cursor 编程实现一个小产品 Chrome 扩展插件 MVP 功能
  • 阿里云 ECS 服务器绑定多个公网IP
  • 程序员转行室内设计师(软装设计流程)
  • 打卡算法题:155. 最小栈 --- 从193ms 到 4 ms的优化
  • linux装git
  • 基于 kubesphere + cube-studio搭建一站式云原生机器学习平台 国产纯中文 实操记录
  • 【遗传算法简介】
  • 太速科技-519-基于ZU19EG的4路100G光纤的PCIe 加速计算卡
  • 沪深捉妖记(一)探寻妖股的特征
  • 什么是网络安全(Cybersecurity)?
  • 1341:【例题】一笔画问题
  • 天河超算,使用Python自动ssh
  • 爬虫究竟是合法还是违法的?
  • 深度求索发布DeepSeek:高效、低成本的开源大语言模型
  • 讯飞星火智能生成PPTAPi接口说明文档 python示例demo
  • wget基本使用
  • Python爬虫教程——7个爬虫小案例(附源码)_爬虫实例
  • 如何优化Python网络爬虫的数据清洗流程,以提升数据质量并有效应对网站反爬虫机制?
  • pd.Timestamp接收的参数类型
  • 在K8S中,节点状态哪个组件负责上报?