第36章 插入意向锁死锁 - xiaoboluo768/qianjinliangfang GitHub Wiki
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章 分页查询优化