这个DBA有点耶
WHERE没走索引,UPDATE锁了100万行——锁范围等于扫描行数的底层逻辑
原创
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
这个DBA有点耶
社区首页
>
专栏
>
WHERE没走索引,UPDATE锁了100万行——锁范围等于扫描行数的底层逻辑
WHERE没走索引,UPDATE锁了100万行——锁范围等于扫描行数的底层逻辑
这个DBA有点耶
关注
发布于 2026-10-12 16:22:44
发布于 2026-10-12 16:22:44
54
0
举报
概述
很多人以为“我只改10行,凭什么锁了100万行”。InnoDB没有真正的“锁升级”机制——它不会主动把行锁升级为表锁。所谓的“锁升级”,本质是WHERE条件没走索引导致全表扫描,扫过的每一行都被加了锁,等效于锁了整张表。本文拆解这个反直觉结论的底层逻辑,分析RR隔离级别下间隙锁的加剧效应,给出三种典型场景和解决方案。
文章被收录于专栏:
小耶转行干货分享
小耶转行干货分享
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系
cloudcommunity@tencent.com
删除。
锁
mysql
sql
目录
一、为什么UPDATE/DELETE比SELECT危险得多
二、锁升级的三种典型场景
三、怎么确认锁的范围
四、解决方案
五、小结
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档