MySQL篇-锁机制详解:全局锁、表级锁、行级锁
MySQL锁机制详解全局锁、表级锁、行级锁1.锁的介绍数据库中的数据是共享资源如何保证并发访问的一致性和有效性是所有数据库必须解决的问题。上篇 MySQL事务详解 介绍了通过提高事务隔离级别解决并发问题本篇从锁的角度切入。锁是控制多线程访问共享资源的工具。MySQL 按锁的颗粒度分为三类全局锁、表级锁、行级锁下面逐一讲解。2. 全局锁Global Lock2.1 全局锁介绍全局锁颗粒度最大锁住整个数据库。加锁后数据库只读其他线程的所有修改操作都会被阻塞。典型应用场景全库逻辑备份。备份期间禁止修改避免备份数据与主数据不一致。2.2 全局锁使用加全局锁flushtableswithreadlock;执行后整个数据库只读。MySQL 备份工具 mysqldumpmysqldump-u root-p[指定备份文件].sql释放全局锁unlocktables;注意当前会话断开全局锁也会自动释放。2.3 全局锁的问题全局锁是重量级操作加锁期间整个数据库只读业务无法修改。如果数据量大备份耗时长业务修改会被长时间阻塞。如何避免全局锁的影响InnoDB 引擎下mysqldump 加--single-transaction参数即可规避加上该参数后备份前先开启事务。InnoDB 默认隔离级别是可重复读备份前创建 Read View整个事务期间通过 MVCC 保证备份数据一致性同时其他事务可正常修改数据业务不受影响。3. 表级锁Table Lock表级锁对整张表加锁颗粒度比全局锁小。分为三类表锁、元数据锁MDL、意向锁。3.1 表锁表锁介绍表锁作用于整张表分为读锁和写锁。读锁共享锁允许本线程和其他线程读该表阻塞本线程和其他线程写该表写锁独占锁只允许本线程读和写该表其他线程的读写操作全部阻塞表锁使用对用户表加表锁//加读类型的表锁locktablesuserread//加写类型的表锁locktablesuserwrite;释放表锁unlocktables;注意当前会话断开表锁也会自动释放。3.2 元数据锁MDL元数据锁介绍元数据锁用于维护表结构一致性避免DDL 语句和 DML 语句冲突。简单说对表字段增删改查时不能同时修改表结构。元数据锁无需手动创建系统对表操作时自动加锁对表字段执行增删改查 → 加MDL 读锁对表结构执行修改 → 加MDL 写锁元数据锁使用查看是否使用了元数据锁selectobject_type,object_schema,object_name,lock_type,lock_duration,lock_statusfromperformance_schema.metadata_locks;此时系统给这张表加的就是MDL 读锁。事务提交后元数据锁自动释放。3.3 意向锁意向锁介绍意向锁像一个警示牌用于标识表中记录是否被加了行锁。为什么需要意向锁没有意向锁时加表锁前需扫描表中所有数据检查是否存在行锁表锁和行锁冲突性能极低。引入意向锁后对数据加行锁前先对表加意向锁。加表锁时只需检查是否存在意向锁无需逐条扫描性能大幅提升。意向锁分为意向共享锁和意向独占锁对记录执行增删改→ 先加意向独占锁再加独占锁对记录执行select ... lock in share mode→ 先加意向共享锁再加共享锁意向锁虽是表级锁但与行锁不冲突意向锁之间也不冲突只和表锁冲突。4. 行级锁Row Lock行级锁对表中记录加锁颗粒度最小。分为三类行锁、间隙锁、临键锁。4.1 行锁行锁介绍行锁作用于某一条记录颗粒度最小分为读锁共享锁和写锁独占锁。读锁共享锁允许本线程和其他线程读该记录阻塞本线程和其他线程写该记录写锁独占锁只允许本线程读和写该记录其他线程的读写操作全部阻塞关键特性行锁在事务中生效事务提交或回滚后自动释放行锁基于索引实现。查询条件未走索引时行锁会升级为表锁颗粒度变大影响并发性能行锁使用对 user 表中 id1 的记录加行锁// 开启事务begin;// 加写类型的行锁select*fromuserwhereid1forupdate;// 加读类型的行锁select*fromuserwhereid1lockinsharemode;// 提交事务释放行锁commit;执行select ... for update→ 加写锁其他事务对该记录的读写操作全部阻塞直到当前事务提交或回滚执行select ... lock in share mode→ 加读锁其他事务可读该记录但写操作被阻塞对记录执行增删改操作时系统也会自动加行锁。4.2 间隙锁Gap Lock间隙锁介绍间隙锁锁住的是索引记录之间的间隙范围而非某条具体记录主要用于解决幻读问题。核心机制可重复读隔离级别下事务对某范围加间隙锁后其他事务不能在该间隙插入新记录从而避免幻读。示例user 表 id 索引值为 1、3、5间隙锁可锁住(1,3)、(3,5)、(5, ∞)。其他事务试图在(3,5)间隙插入 id4 的记录时会被阻塞。间隙锁之间不冲突可同时存在间隙锁只和插入操作冲突。间隙锁使用间隙锁自动加锁无需手动创建。使用范围条件查询时InnoDB 自动对范围内间隙加锁//开启事务begin;//对 id 大于 1 且小于 5 的范围加间隙锁select*fromuserwhereid1andid5forupdate;//提交事务释放间隙锁commit;执行后其他事务无法在(1,5)间隙插入 id 为 2、3、4 的新记录直到当前事务提交或回滚。4.3 临键锁Next-Key Lock临键锁介绍临键锁是行锁和间隙锁的组合既锁住某条索引记录又锁住该记录前面的间隙。锁范围是左开右闭区间如(1,3]表示锁住 id 大于 1 且小于等于 3 的记录及其前面的间隙。关键特性临键锁是 InnoDB 在可重复读隔离级别下的默认锁同时解决幻读和脏读问题。示例user 表 id 索引值为 1、3、5临键锁锁住(-∞,1]、(1,3]、(3,5]、(5,∞)。其他事务试图在(1,3]插入 id2 的记录时会被阻塞。临键锁使用临键锁自动加锁无需手动创建。等值或范围条件查询时InnoDB 自动对命中的记录及其前面间隙加锁//开启事务begin;//对 id 小于等于 3 的记录及其前面的间隙加临键锁select*fromuserwhereid3forupdate;//提交事务释放临键锁commit;执行后其他事务无法修改 id 为 1、3 的记录也无法在(-∞,1]和(1,3]间隙插入新记录直到当前事务提交或回滚。注意查询条件命中的记录不存在时临键锁会退化为间隙锁只锁间隙不锁记录。

相关新闻

雷克萨斯混动占比36%背后的市场逻辑与用户决策分析

雷克萨斯混动占比36%背后的市场逻辑与用户决策分析

1. 从“混动占比36%”看雷克萨斯的市场策略与用户心理 最近看到雷克萨斯4月份销量超过2万辆,其中混合动力车型占比达到36%这个数据,作为一个长期观察汽车市场,特别是豪华品牌动向的从业者,我觉得这个数字背后透露出的信息&#xf…

2026/8/18 11:33:42 阅读更多 →
2026 国自然放榜在即!网传面上资助率只有 8%,有在研面上今年直接没戏?

2026 国自然放榜在即!网传面上资助率只有 8%,有在研面上今年直接没戏?

近期科研圈刷屏的两条 2026 国自然小道消息,让放榜前夕的焦虑直接拉满。八月,本该是暑假,却是科研人最坐立难安的一个月。2026 年国自然评审结果即将放榜,这几天,学术群里、社交平台上,各种"内部消息&…

2026/8/18 11:33:42 阅读更多 →
【飞机】载荷不确定性下的飞机机翼梁质量优化附matlab代码

【飞机】载荷不确定性下的飞机机翼梁质量优化附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 11:33:42 阅读更多 →

最新新闻

【单片机课设毕设项目】基于 STM32/51 单片机的按键可调阈值气压检测报警平台设计 物联网架构下单片机气压感知与蓝牙移动端监控系统设计(022403)

【单片机课设毕设项目】基于 STM32/51 单片机的按键可调阈值气压检测报警平台设计 物联网架构下单片机气压感知与蓝牙移动端监控系统设计(022403)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 14:46:15 阅读更多 →
【单片机课设毕设项目】基于 STM32/51 单片机的压力传感称重与声光报警系统 基于 STM32/51 单片机的现场称重数据显示与计价终端(021103)

【单片机课设毕设项目】基于 STM32/51 单片机的压力传感称重与声光报警系统 基于 STM32/51 单片机的现场称重数据显示与计价终端(021103)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/18 14:46:15 阅读更多 →
FanControl 风扇控制软件快速上手指南:三步接管 Windows 散热节奏

FanControl 风扇控制软件快速上手指南:三步接管 Windows 散热节奏

FanControl 风扇控制软件快速上手指南:三步接管 Windows 散热节奏 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…

2026/8/18 14:46:15 阅读更多 →
图片自动分层的完整通关路线:用Layerdivider在5分钟内把插画拆成可编辑PSD文件

图片自动分层的完整通关路线:用Layerdivider在5分钟内把插画拆成可编辑PSD文件

图片自动分层的完整通关路线:用Layerdivider在5分钟内把插画拆成可编辑PSD文件 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 阅读提示&#…

2026/8/18 14:46:15 阅读更多 →
内联汇编与Naked函数:B语言编译器bext-lang/b的底层控制进阶教程

内联汇编与Naked函数:B语言编译器bext-lang/b的底层控制进阶教程

内联汇编与Naked函数:B语言编译器bext-lang/b的底层控制进阶教程 【免费下载链接】b Compiler for the B Programming Language implemented in Crust 项目地址: https://gitcode.com/gh_mirrors/b8/b B语言编译器 bext-lang/b 是一个用 Crust(C …

2026/8/18 14:46:15 阅读更多 →
手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南

手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南

手把手玩转LiquidBounce战斗模块:KillAura与CrystalAura完整配置避坑指南 【免费下载链接】LiquidBounce A free Minecraft hacked client (utility mod) for Fabric 项目地址: https://gitcode.com/gh_mirrors/li/LiquidBounce 如果你在Minecraft PVP里总是…

2026/8/18 14:45:15 阅读更多 →

日新闻

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF

告别逐帧截图:用 extract-video-ppt 快速提取视频中的 PPT 并一键导出 PDF 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 如果你还停留在"看网课 不停暂停 截图 …

2026/8/18 0:00:57 阅读更多 →
思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查

思源宋体TTF一站式上手:7个字重免费商用,从下载到上线的完整走查 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 你是不是也经历过这种时刻:设计稿里…

2026/8/18 0:00:58 阅读更多 →
华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate

华硕笔记本控制权回收指南:GHelper 如何用一个 10MB 文件替代 Armoury Crate 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, …

2026/8/18 0:00:59 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/18 9:15:35 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/18 9:06:28 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/18 9:04:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/17 18:54:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/17 18:55:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/17 18:55:55 阅读更多 →