A. WAITING FOR THIS LOCK TO BE GRANTED,表示的是这个事务在等待的锁信息; B. index c of tabletest.t,说明在等的是表 t 的索引 c 上面的锁; C. lock mode S waiting 表示这个语句要自己加一个读锁,当前的状态是等待中; D. Record lock 说明这是一个记录锁; E. n_fields 2 表示这个记录是两列,...
*** (1) HOLDS THE LOCK(S): RECORD LOCKS ... index PRIMARY of table `example_db`.`address_type` trx id 4036 lock_mode X locks rec but not gap Record lock ... *** (1) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS ... index PRIMARY of table `example_db`.`address_type`...
(1)全局锁:flush tables(全局锁) (2)表锁:lock table(表锁)、意向锁、自增锁、MDL锁 (3)行锁:记录锁、间隙锁、临键锁、插入意向锁 MySQL 官网的 InnoDB 锁类型,另外我之前也写过一篇也可以参考。 可能会疑惑 flush tables(全局锁)、lock table(表锁)、MDL锁 怎么没看到上边的图里有呢? 因为这三个是...
update `order` set `year`= '2022' where id = '1'//执行得语句 *** (2) HOLDS THE LOCK(S): //持有锁 RECORD LOCKS space id 65 page no 3 n bits 80 index PRIMARY of table `zszxz`.`order` trx id 253508 lock_mode X locks rec but not gap ... *** (2) WAITING FOR THIS LOC...
表示事务 2 的 insert 语句正在等待插入意向锁 lock_mode X locks gap before rec insert intention waiting ( LOCK_X + LOCK_REC_gap ) --经典案例分析-- 案例一:并发申请 gap 锁导致死锁 表结构和数据如下所示: 测试用例如下(本测试用例场景是两个事务删除不存在的行,然后再 insert 记录): ...
begin;select * from student lock in share mode; 此时再次在session1查看锁:红框是session1插入时加的锁,蓝框是session2加的锁。可以看到对行记录2添加了X的排他锁,InnoDB自动为表添加了IS意向锁,获取到了行记录1的S锁,尝试获取行记录2的S锁时被阻塞。
LOCK WAIT 表示正在等待锁,2 lock struct(s) 表示 trx->trx_locks 锁链表的长度为2,每个链表节点代表该事务持有的一个锁结构,包括表锁,记录锁以及自增锁等。本用例中 2locks 表示 IX 锁和lock_mode X (Next-key lock) 1 row lock(s)表示当前事务持有的行记录锁/ gap 锁的个数。
表示事务 2 的 insert 语句正在等待插入意向锁 lock_mode X locks gap before rec insert intention waiting ( LOCK_X + LOCK_REC_gap ) --经典案例分析-- 案例一:并发申请 gap 锁导致死锁 表结构和数据如下所示: 测试用例如下(本测试用例场景是两个事务删除不存在的行,然后再 insert 记录): ...
在普通的select语句后边加 lock in share mode,如果当前事务执行了该语句,那么它会为读取到的记录加S锁,这样允许别的事务继续获取这些记录的S锁(比方说别的事务也使用select... lock in share mode语句来读取这些记录)。但是不能获取这些记录的X锁(比如使用select ... for update语句来读取这些记录,或者直接修改...
表示事务 2 的 insert 语句正在等待插入意向锁 lock_mode X locks gap before rec insert intention waiting ( LOCK_X + LOCK_REC_gap ) --经典案例分析-- 案例一:并发申请 gap 锁导致死锁 表结构和数据如下所示: 测试用例如下(本测试用例场景是两个事务删除不存在的行,然后再 insert 记录): ...