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

发布时间:2026/8/26 15:37:36

什么是排他锁、共享锁、意向锁?
下面按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/8/24 16:13:40

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

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

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

2026/8/26 16:21:24

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

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

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

2026/8/22 19:54:55

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…

2025电赛A题:让直流电源“下岗“的能量回馈,国一队拆给你看

2025电赛A题:让直流电源“下岗“的能量回馈,国一队拆给你看

2026/8/26 16:36:36

电赛每日一题 第 1 期 | 今日拆解:2025 年 A 题 能量回馈的变流器负载试验装置 这道题最狠的一点是:你的系统越省电,分数越高。它把"节能"本身变成了评分项——直流电源输出功率 P_d 越小越好,这就逼着所有队伍把电能"循环再利用"。本期从原理、拓扑…

SyncKit vs Yjs:为什么选择功能齐全的Local-First协作方案?附完整迁移教程

SyncKit vs Yjs:为什么选择功能齐全的Local-First协作方案?附完整迁移教程

2026/8/26 16:36:36

SyncKit vs Yjs:为什么选择功能齐全的Local-First协作方案?附完整迁移教程 【免费下载链接】synckit Local-first collaboration SDK for React, Vue, and Svelte. Batteries-included: Rich text, undo/redo, cursors, and presence. 项目地址: http…

CraftBeerPi温控算法深度解析:PID、过冲与迟滞三种自动控温逻辑源码逐行剖析

CraftBeerPi温控算法深度解析:PID、过冲与迟滞三种自动控温逻辑源码逐行剖析

2026/8/26 16:36:36

CraftBeerPi温控算法深度解析:PID、过冲与迟滞三种自动控温逻辑源码逐行剖析 【免费下载链接】craftbeerpi Brew Controller 项目地址: https://gitcode.com/gh_mirrors/cr/craftbeerpi CraftBeerPi 是一款基于树莓派的自酿啤酒智能控温系统,其核…

如何扩展nimkernel:从彩色Hello World迈向完整Nim操作系统的终极路线图

如何扩展nimkernel:从彩色Hello World迈向完整Nim操作系统的终极路线图

2026/8/26 16:36:36

如何扩展nimkernel:从彩色Hello World迈向完整Nim操作系统的终极路线图 【免费下载链接】nimkernel A small kernel written in Nim 项目地址: https://gitcode.com/gh_mirrors/ni/nimkernel nimkernel 是一个用 Nim 语言编写的极简 32 位(i686&a…

如何快速上手AndroidScreenAdaptation:从0到1的完整接入教程(依赖+初始化+配置全解析)

如何快速上手AndroidScreenAdaptation:从0到1的完整接入教程(依赖+初始化+配置全解析)

2026/8/26 16:36:36

如何快速上手AndroidScreenAdaptation:从0到1的完整接入教程(依赖初始化配置全解析) 【免费下载链接】AndroidScreenAdaptation A light and easy-to-use Android development screen adaptation tool library(一个轻量好用的安卓开发屏幕适配…

2026 AIoT 行业观察:主流智能平台落地能力与技术优势全解析

2026 AIoT 行业观察:主流智能平台落地能力与技术优势全解析

2026/8/26 16:26:35

随着AI技术与物联网产业的深度融合,AI落地能力已成为衡量IoT平台核心竞争力的关键指标。从家庭全屋智能到商业空间智能化,从家电产品赋能到产业园区升级,AI技术的有效落地直接决定了方案的实际价值与用户体验。据中国信息通信研究院发布的物联…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/26 1:50:39

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/26 1:49:16

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

2026/8/26 0:05:45

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

Hermes接入团队协作后,我推翻了三个效率假设

Hermes接入团队协作后,我推翻了三个效率假设

2026/8/26 0:05:45

聊《Hermes真能提效吗?先看流程里最慢的那一步》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要团队把 Hermes 接进项目三个月后,交付速度没有提升反而慢了。复盘后发现,最先…

免费AI大模型调教指南:打造专属网文写作助手

免费AI大模型调教指南:打造专属网文写作助手

2026/8/26 0:05:45

1. 先搞清楚“AI小说扩展模式”到底能帮你做什么如果你是一个刚开始写网文、或者卡在L3级别以下的作者,最头疼的可能是情节推进不下去、人物对话干瘪,或者世界观设定不够丰满。自己对着空白文档硬憋,效率很低。这时候,一个能理解你…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…