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

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.lryc.cn/news/512412.html

相关文章:

  • 【服务器开发及部署】code-server 显示git graph
  • Linux 终端查看 nvidia 显卡型号
  • 助你通过AI培训师中级考试的目录索引
  • 百度PaddleSpeech识别大音频文件报错
  • Lucene 漏洞历险记:修复损坏的索引异常
  • RabbitMQ基础篇之快速入门
  • 如何自定义 Kubernetes KubeSphere 默认 Logo:详细实现方案
  • 标准库以及HAL库——按键控制LED灯代码
  • Echarts+vue电商平台数据可视化——webSocket改造项目
  • Flink中并行度和slot的关系——任务和任务槽
  • 基于西湖大学强化学习课程的笔记
  • 瀚高数据库 问题: ERROR: operator does not exist: character varying = integer
  • 冷链温度记录仪蓝牙应用案例
  • LeetCode - Google 校招100题 第7天 序列(数据结构贪心) (15题)
  • 深入理解Redis:从理论到实践的Java之旅
  • LabVIEW故障诊断中的无故障数据怎么办
  • 基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD Video 之全功能显示器连接端口方案
  • MySQL配置my.ini文件
  • JVM常见排查问题的命令及可视化工具
  • 【python】matplotlib(moon cake)
  • Pytorch使用手册-空间变换网络指南(专题十五)
  • Vue 中el-table-column 进行循环,页面没渲染成功
  • 基于单片机的温湿度采集系统(论文+源码)
  • 使用envoyfilter添加请求头
  • kafka开机自启失败问题处理
  • 优化站群SEO:使用苹果CMS泛目录插件实现泛目录页面刷新不变
  • git clone 和 conda 换源
  • 人工智能及深度学习的一些题目(二)
  • 怎么在VMware Workstation上安装Win11虚拟机?
  • 协程原理 函数栈 有栈协程