第36章 插入意向锁死锁 - xiaoboluo768/qianjinliangfang GitHub Wiki

36.1 现象描述

mysql> CREATE TABLE t (a INT UNSIGNED NOT NULL PRIMARY KEY, b INT);
mysql> INSERT INTO t VALUES(10,0),(20,0);
  • 表36-1
Session 1 Session 2
BEGIN;UPDATE t SET b=1 WHERE a=20//执行成功
BEGIN; SELECT * FROM t LOCK IN SHARE MODE; //发生阻塞
INSERT INTO t VALUES(11,1);
//同一时刻Session 2报出死锁错误; SELECT * FROM t LOCK IN SHARE MODE; ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
  • 36.2 问题分析
    • 表36-3
Session 1 Session 2
a=20 -> lock(x) 记录锁X
a=10 -> lock(s); a=20 -> lock wait session1 ; Next-Key Lock(S)锁
插入意向锁

上一篇:第35章 删除不存在的数据造成死锁 | 下一篇:第37章 分页查询优化

⚠️ **GitHub.com Fallback** ⚠️