MySQL行锁按索引记录加,WHERE不走索引会导致全表扫描并加临键锁,甚至升级为表锁;唯一索引下WHERE id=1仅加记录锁,非唯一索引则加临键锁;ORDER BY+LIMIT是否缩小锁范围取决于是否命中索引。WHERE 条件没走索引,全表扫描就等于全表加锁MySQL 的行锁(比如 UPDATE 或 SELECT ... FOR UPDATE)不是按“行”加的,而是按“索引记录”加的。如果 WHERE 条件无法命中索引,InnoDB 只能走聚簇索引全扫描——这时每条记录都会被加上临键锁(next-key lock),锁住整个范围,甚至可能升级为表锁。常见错误现象:SHOW ENGINE INNODB STATUS 里看到大量 RECORD LOCKS,但业务只改一行,却卡住其他无关更新使用场景:高并发下单、库存扣减、账户余额变更等对一致性要求高的写操作验证是否走索引:务必用 EXPLAIN 看 type 是否为 range/ref/const,且 key 列非 NULL注意隐式类型转换:比如 user_id 是 INT,但传了字符串 '123',会导致索引失效 → 全表锁联合索引顺序错,等于白建联合索引 (a, b, c) 能加速 WHERE a=1 AND b=2,但对 WHERE b=2 AND c=3 完全无效——不仅查不到,而且加锁也会落到聚簇索引上,锁住所有满足 b=2 的行(即使 c 不匹配)。参数差异:WHERE a=1 锁的是索引中 a=1 对应的所有索引项;WHERE a=1 AND b>2 锁的是 (a=1, b>2) 的临键区间,范围更小容易踩的坑:把高频过滤字段放在联合索引后位,比如 (created_at, user_id),但查询总以 user_id 为条件 → 索引失效 → 加锁变宽性能影响:错误顺序会让原本只锁几十行的操作,变成锁几千行,阻塞明显SELECT ... FOR UPDATE 在唯一索引和非唯一索引下加锁行为完全不同这是最容易被忽略的细节:同样是 WHERE id = 123,如果 id 是主键或唯一索引,InnoDB 只加一条记录上的记录锁(record lock);但如果 id 是普通索引(哪怕有唯一约束但没定义为 UNIQUE),就会加临键锁(next-key lock),锁住该值前后的间隙。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
mysql如何通过索引减少行锁范围_mysql索引与加锁逻辑
张小明
前端开发工程师
ARM调试寄存器详解:EDITCTRL与EDPRCR应用指南
1. ARM外部调试寄存器概述在嵌入式系统开发中,调试寄存器是连接开发环境与硬件的重要桥梁。ARM架构提供了一套完整的外部调试寄存器组,通过内存映射接口实现对处理器核心状态的精细控制。这些寄存器主要分为三类:控制类寄存器:如E…
Augustus核心功能深度解析:路障、劳动力池与仓库管理
Augustus核心功能深度解析:路障、劳动力池与仓库管理 【免费下载链接】augustus An open source re-implementation of Caesar III 项目地址: https://gitcode.com/gh_mirrors/au/augustus Augustus是一款开源的Caesar III重制版游戏,它通过精准的…
思科|实战|从零构建BGP多域互联
1. 为什么需要BGP多域互联? 在企业网络规模不断扩大、业务需求日益复杂的今天,单一路由协议往往难以满足跨地域、多自治系统的互联需求。BGP(边界网关协议)作为互联网的"导航系统",能够高效管理不同自治系统…
中文提示词仓库:提升AI对话效率的工程实践指南
1. 项目概述:为什么我们需要一个中文的“优质提示词”仓库?如果你最近在尝试使用各种大语言模型,无论是ChatGPT、Claude还是国内的文心一言、通义千问,你大概率会遇到一个共同的困惑:为什么别人用同一个模型࿰…
Y CRDT 内部原理揭秘:高性能CRDT算法的终极实现
Y CRDT 内部原理揭秘:高性能CRDT算法的终极实现 【免费下载链接】y-crdt Rust port of Yjs 项目地址: https://gitcode.com/gh_mirrors/yc/y-crdt Y CRDT 是一个基于 Rust 实现的高性能 CRDT(无冲突复制数据类型)库,它通过…
Linux内核构建自动化:jpoindexter/kern工具实战指南
1. 项目概述:一个被低估的Linux内核构建工具 如果你和我一样,长期在嵌入式开发、内核模块调试或者需要频繁定制Linux内核的岗位上工作,那么你一定对内核的配置、编译、打包这一套繁琐的流程感到又爱又恨。爱的是,这是深入理解操作…