欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

MySQL 锁机制:行锁、间隙锁与死锁排查

发表于:|最后更新:|分类:数据库与存储|阅读:4401 次
本文标签:MySQLInnoDB锁机制

InnoDB 的行锁基于索引实现,理解记录锁、间隙锁与 Next-Key Lock 是分析死锁的前提。

一、三类行级锁

  • Record Lock:锁定单条索引记录
  • Gap Lock:锁定索引记录之间的间隙,阻止插入
  • Next-Key Lock:Record Lock + Gap Lock,锁定左开右闭区间

二、死锁排查

sql
-- 查看最近一次死锁信息
SHOW ENGINE INNODB STATUS\G

死锁日志中 LATEST DETECTED DEADLOCK 段会展示两个事务持有的锁与等待的锁。常见成因包括:加锁顺序不一致、缺少索引导致全表扫描加锁、长事务持有锁过久。规避手段:统一加锁顺序、缩短事务、为查询条件建立合适索引。