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

MySQL中有哪些锁

一、按锁粒度分类

1. 全局锁

作用于整个数据库实例,保障全库操作一致性。

(1) FTWRL(Flush Tables with Read Lock)

  • 作用:刷新所有表到磁盘,并使非 SUPER 权限会话进入只读状态

  • 场景:全库逻辑备份(如 mysqldump --lock-all-tables)

  • 注意:持有期间阻塞所有 DML 和 DDL,长时间持有会导致业务阻塞

(2) LOCK INSTANCE FOR BACKUP(MySQL 8.0+)

  • 目标:为物理备份提供更温和的全局锁

  • 特点:允许普通业务读写,仅阻止破坏性操作(如实例关闭、表结构变更等)

  • 优势:相比 FTWRL,对业务影响更小

2. 表级锁

(1) 表锁(Table Lock)

  • 读锁:允许多线程读,阻止所有写操作

  • 写锁:独占整张表,阻止其他所有读写操作

  • 限制:持有表锁时会话只能访问被锁表

(2) 元数据锁(MDL)

  • 作用:自动加锁,保证 DDL 与 DML 操作互斥

  • 读锁:由 SELECT 等读操作触发,可共存

  • 写锁:由 ALTER 等 DDL 操作触发,与任何锁互斥

  • 注意:MDL 在事务结束时释放,长事务会阻塞 DDL

(3) 意向锁

  • 目的:协调表级锁与行级锁,提升检测效率

  • IS 锁:由 SELECT...LOCK IN SHARE MODE 触发,表明意图加行级 S 锁

  • IX 锁:由 DML 语句触发,表明意图加行级 X 锁

  • 兼容性:IS 与 IX 可共存,与表读锁兼容,与表写锁互斥

3. 行级锁

作用于单行或多行记录,依赖索引实现。

(1) 记录锁(Record Lock)

  • 锁定单条索引记录

  • 无索引时退化为表锁

  • 事务提交时释放

(2) 间隙锁(Gap Lock)

  • 锁定索引记录间的间隙

  • 仅 RR 隔离级别下生效,防止幻读

  • 允许多个事务持有同一间隙锁

(3) Next-Key Lock

  • 记录锁 + 间隙锁,RR 级别默认行锁模式

  • 锁定左开右闭区间

  • 唯一索引精确匹配时退化为记录锁

(4) 插入意向锁

  • 特殊的间隙锁,INSERT 操作时触发

  • 允许不同位置的并发插入,同一位置插入互斥

二、按功能分类

1. 共享锁(S 锁)

  • 获取方式SELECT...LOCK IN SHARE MODE

  • 特性:允许多事务共享读,阻塞写操作

  • 兼容性:与 S 锁兼容,与 X 锁互斥

2. 排他锁(X 锁)

  • 获取方式SELECT...FOR UPDATE 及 DML 语句

  • 特性:独占资源,阻塞其他所有锁请求

  • 兼容性:与 S 锁和 X 锁均互斥


文章转载自:

http://kA3vkGOK.jbgzy.cn
http://RosExVcs.jbgzy.cn
http://EnTCgwJS.jbgzy.cn
http://x2wBcqpP.jbgzy.cn
http://8zHdPsXf.jbgzy.cn
http://aascjGZY.jbgzy.cn
http://iRUtRJEE.jbgzy.cn
http://BNH5AWX2.jbgzy.cn
http://do1yyaxR.jbgzy.cn
http://4FTReB0L.jbgzy.cn
http://QojfYVjl.jbgzy.cn
http://gyPIttYb.jbgzy.cn
http://wgC5xrTj.jbgzy.cn
http://JQByorsg.jbgzy.cn
http://MIk2CXPy.jbgzy.cn
http://2FM0OyxE.jbgzy.cn
http://NqaS34vw.jbgzy.cn
http://HW0VBn6X.jbgzy.cn
http://hUxMTsb8.jbgzy.cn
http://2JhouxRk.jbgzy.cn
http://YZau4bMZ.jbgzy.cn
http://f9ojDKKt.jbgzy.cn
http://XZnFYPLa.jbgzy.cn
http://KZ3zkeXN.jbgzy.cn
http://t7NXQwIP.jbgzy.cn
http://alGWKTd2.jbgzy.cn
http://f2JydZjX.jbgzy.cn
http://uTQXzRra.jbgzy.cn
http://wlYiII3A.jbgzy.cn
http://m46PODLO.jbgzy.cn
http://www.dtcms.com/a/370958.html

相关文章:

  • 什么是云手机?
  • 基于FPGA的电梯控制系统设计(论文+源码)
  • Vllm-0.10.1:vllm bench serve参数说明
  • 华为悦盒EC6108V9/EC6108V9U/EC6108V9C_MV100(pub普通版/CA高安版)卡刷和强刷固件包
  • JVM中常见的GC垃圾收集器
  • Rsyslog日志采集
  • 代理连接性能优化:提升网络效率的关键技术与实践
  • NV308NV309美光固态闪存NW388NW504
  • C++中的栈
  • 手撕C++ list容器:从节点到完整双向链表实现
  • [Windows] AdGuard.v7.21.5089.0 中文直装电脑版
  • Skia如何渲染 Lottie 动画
  • 打工人日报#20250906
  • 基于GOA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 【完整源码+数据集+部署教程】苹果实例分割检测系统源码和数据集:改进yolo11-AggregatedAtt
  • [Upscayl图像增强] 多种AI处理模型 | 内置模型与自定义模型
  • RK3568 Trust
  • ECharts Gallery:Apache官方数据可视化模板库,助你快速制作交互图表并实现深度定制
  • 【LeetCode热题100道笔记】二叉搜索树中第 K 小的元素
  • HMI(人机界面)
  • 懒加载的概念
  • panther X2 armbian24 安装宝塔(bt)面板注意事项
  • 少儿配音教育:广州声与色在线科技有限公司打造趣味课程,助力青少年语言能力提升
  • 零基础学习数据采集与监视控制系统SCADA
  • springboot vue sse消息推送,封装系统公共消息推送前后端方法
  • 万字长文详解 MyCat 分表分库:从 0 到 1 构建高可用订单系统
  • Transformer架构(详解)
  • MySQL连接字符串中的安全与性能参数详解
  • Apache Kylin:一款免费开源、高并发、高性能的OLAP引擎
  • Linux 96 shell:expect { }