什么是排他锁、共享锁、意向锁?

发布时间:2026/7/7 14:21:57

什么是排他锁、共享锁、意向锁?
下面按MySQL InnoDB语境解释排他锁X 锁Exclusive Lock 共享锁S 锁Shared Lock 意向锁Intention Lock包括 IS 锁和 IX 锁它们的核心关系是共享锁我想读别人也可以读但别人不能改 排他锁我要改别人不能读锁定读也不能改 意向锁我准备在表里的某些行上加锁先在表级别打个标记1. 共享锁 S 锁共享锁也叫读锁。如果一个事务给某行加了共享锁其他事务仍然可以对这行加共享锁但不能加排他锁。例如SELECT * FROM users WHERE id 1 LOCK IN SHARE MODE;或者 MySQL 8 中也可以写SELECT * FROM users WHERE id 1 FOR SHARE;含义是我要读 id 1 这行并且不希望别人修改它。假设事务 A 执行BEGIN; SELECT * FROM users WHERE id 1 FOR SHARE;此时事务 B 也可以读SELECT * FROM users WHERE id 1 FOR SHARE;因为共享锁和共享锁兼容。但是事务 B 如果想改UPDATE users SET age 20 WHERE id 1;就会被阻塞。因为UPDATE需要对这行加排他锁而排他锁和共享锁冲突。2. 排他锁 X 锁排他锁也叫写锁。如果一个事务给某行加了排他锁其他事务不能再对这行加共享锁也不能加排他锁。常见语句UPDATE users SET age 20 WHERE id 1;或者DELETE FROM users WHERE id 1;或者SELECT * FROM users WHERE id 1 FOR UPDATE;这些都会对相关记录加排他锁。例如事务 ABEGIN; UPDATE users SET age 20 WHERE id 1;此时事务 B 执行UPDATE users SET age 30 WHERE id 1;会被阻塞。事务 B 执行SELECT * FROM users WHERE id 1 FOR SHARE;也会被阻塞。因为排他锁和其他锁都冲突。但是普通快照读SELECT * FROM users WHERE id 1;通常不会被阻塞因为普通SELECT走 MVCC不加行锁。S 锁和 X 锁兼容关系当前已有锁另一个事务申请 S 锁另一个事务申请 X 锁S 锁兼容冲突X 锁冲突冲突简单记读读可以并发 读写互斥 写写互斥4. 意向锁是什么意向锁是 InnoDB 的表级锁。它不是直接锁某一行而是在表级别声明我接下来要在这张表的某些行上加共享锁或排他锁。意向锁主要有两种IS 锁Intention Shared Lock意向共享锁 IX 锁Intention Exclusive Lock意向排他锁4.1 IS 锁事务想给某些行加共享锁之前会先给表加 IS 锁。例如SELECT * FROM users WHERE id 1 FOR SHARE;大致加锁过程1. 先给 users 表加 IS 锁 2. 再给 id 1 这行加 S 锁IS 锁的意思是我准备在这张表的某些行上加共享锁。4.2 IX 锁事务想给某些行加排他锁之前会先给表加 IX 锁。例如UPDATE users SET age 20 WHERE id 1;大致加锁过程1. 先给 users 表加 IX 锁 2. 再给 id 1 这行加 X 锁IX 锁的意思是我准备在这张表的某些行上加排他锁。5. 为什么需要意向锁主要是为了提高判断锁冲突的效率。假设事务 A 已经锁了users表里的某几行id 1 id 5 id 9现在事务 B 想执行LOCK TABLES users WRITE;也就是想给整张表加写锁。如果没有意向锁MySQL 可能需要检查这张表里每一行有没有被锁。有了意向锁后事务 A 在加行锁之前已经先在表上加了 IX 锁。事务 B 想加表级写锁时只要发现表上有 IX 锁就知道这张表里已经有人准备或正在加行级排他锁。于是可以直接判断冲突不需要逐行扫描。所以意向锁的核心作用是协调表锁和行锁之间的关系。6. 意向锁会不会阻塞普通行锁通常不会。例如事务 ABEGIN; UPDATE users SET age 20 WHERE id 1;事务 A 会持有users 表上的 IX 锁 id 1 行上的 X 锁事务 BBEGIN; UPDATE users SET age 30 WHERE id 2;事务 B 也需要users 表上的 IX 锁 id 2 行上的 X 锁这两个事务的 IX 锁是兼容的而且锁的是不同行所以通常可以并发执行。这说明意向锁不是为了阻塞普通行级操作 而是为了和表级锁做冲突判断。三者放在一起理解假设执行UPDATE users SET age 20 WHERE id 1;InnoDB 大致会1. 给 users 表加 IX 锁 2. 根据索引找到 id 1 这一行 3. 给 id 1 的索引记录加 X 锁 4. 执行更新 5. 事务提交或回滚后释放锁假设执行SELECT * FROM users WHERE id 1 FOR SHARE;InnoDB 大致会1. 给 users 表加 IS 锁 2. 根据索引找到 id 1 这一行 3. 给 id 1 的索引记录加 S 锁 4. 返回数据 5. 事务提交或回滚后释放锁

相关新闻

Gemini 复制到 word 格式问题频繁出现?AI 导出鸭一站式修复排版错乱难题

Gemini 复制到 word 格式问题频繁出现?AI 导出鸭一站式修复排版错乱难题

2026/7/8 12:25:04

引言 当下Gemini作为主流海外大模型,产出的报告、方案、技术文稿包含多级标题、嵌套表格、Mermaid流程图、数理公式,但用户将Gemini复制到Word后普遍遭遇格式崩坏,重复调整耗费大量办公时间。AI 导出鸭针对Gemini复制到word格式问题打造全链路…

如何永久保存微信聊天记录?WeChatMsg的完整数据资产化方案

如何永久保存微信聊天记录?WeChatMsg的完整数据资产化方案

2026/7/8 12:24:38

如何永久保存微信聊天记录?WeChatMsg的完整数据资产化方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…

Exiled Exchange 2:流放之路2玩家的终极价格查询与交易助手指南

Exiled Exchange 2:流放之路2玩家的终极价格查询与交易助手指南

2026/7/7 18:30:57

Exiled Exchange 2:流放之路2玩家的终极价格查询与交易助手指南 【免费下载链接】Exiled-Exchange-2 Path of Exile 2 trading app for price checking 项目地址: https://gitcode.com/gh_mirrors/ex/Exiled-Exchange-2 Exiled Exchange 2(简称EE…

IIM-20670运动传感器与PIC24FV32KA301微控制器的工业应用

IIM-20670运动传感器与PIC24FV32KA301微控制器的工业应用

2026/7/8 12:18:23

1. IIM-20670运动传感器深度解析 IIM-20670是TDK InvenSense推出的一款6轴工业级运动跟踪传感器,集成了3轴陀螺仪和3轴加速度计。这款传感器在工业自动化、机器人导航、无人机姿态控制等领域有着广泛应用。 陀螺仪量程范围从41dps到1966dps可调,加速度计…

qmc-decoder:解锁音乐自由,让QQ音乐加密音频随处可播

qmc-decoder:解锁音乐自由,让QQ音乐加密音频随处可播

2026/7/8 12:18:23

qmc-decoder:解锁音乐自由,让QQ音乐加密音频随处可播 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经下载了QQ音乐的歌曲,却发…

IIM-20670运动传感器与TM4C1299KCZAD微控制器的应用解析

IIM-20670运动传感器与TM4C1299KCZAD微控制器的应用解析

2026/7/8 12:18:23

1. IIM-20670运动传感器深度解析 IIM-20670是TDK InvenSense推出的一款6轴工业级运动追踪传感器,集成了3轴陀螺仪和3轴加速度计。这款传感器采用MEMS技术,通过SPI接口与主控芯片通信,具有高精度、低功耗的特点,非常适合需要精确运…

2026年全国SEO/GEO培训机构权威指南:如何选择你的“AI推荐引擎”教练?

2026年全国SEO/GEO培训机构权威指南:如何选择你的“AI推荐引擎”教练?

2026/7/8 12:18:23

2026年全国SEO/GEO培训机构权威指南:如何选择你的“AI推荐引擎”教练?2026年,我国数字经济占GDP比重已突破45%,随着国家发改委《生成式人工智能产业融合发展三年行动计划》的落地推进,AIGC已渗透至92%的内容生产场景&a…

IIM-20670运动传感器与dsPIC33FJ256GP710A微控制器应用指南

IIM-20670运动传感器与dsPIC33FJ256GP710A微控制器应用指南

2026/7/8 12:18:23

1. IIM-20670运动传感器核心特性解析IIM-20670是TDK InvenSense推出的一款高性能6轴运动跟踪MEMS器件,集成了3轴陀螺仪和3轴加速度计。这款传感器在工业控制、无人机导航、机器人姿态检测等领域具有广泛应用。其核心优势在于宽量程配置和灵活的SPI接口设计。1.1 陀螺…

2026 亚太南太平洋网络犯罪激增态势与多模态分层防御体系研究

2026 亚太南太平洋网络犯罪激增态势与多模态分层防御体系研究

2026/7/8 12:08:23

摘要 依托国际刑警组织《2025-2026 亚太及南太平洋网络威胁评估报告》与亚太保险评论 2026 年 7 月专题新闻数据,本文系统梳理亚太、南太平洋区域网络犯罪规模化爆发的核心特征:网络犯罪占区域半数国家全部刑事案件 30% 以上,勒索软件、DDoS …

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/7 13:20:59

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

Qwen Code+Obsidian构建可执行的AI时代认知操作系统

2026/7/8 0:07:15

1. 项目概述:这不是又一个笔记软件教程,而是一套可复用的“认知操作系统”搭建逻辑你有没有试过,在读完Andrej Karpathy那篇著名的《Software 2.0》之后,满脑子都是“神经网络即代码”的震撼,但合上网页,打…

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

校园服饰细分赛道测算程序,学生平价国风,机能穿搭市场规模预估。

2026/7/8 0:07:15

校园服饰细分赛道测算程序(Python)——学生平价国风 & 机能穿搭市场规模预估(TAM / SAM / SOM)一、实际应用场景描述(真实业务抽象)在《时尚产业与品牌创新》课程中,细分市场切入&#xff0…

Visual C++运行库完整解决方案:告别软件兼容性问题

Visual C++运行库完整解决方案:告别软件兼容性问题

2026/7/8 0:07:15

Visual C运行库完整解决方案:告别软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾为打开游戏时弹出的"DLL缺失"错误…