1 data_lock_waits 2 data_locks 两个表 查询当前表中是否有死锁或锁的block,需要从data_lock_waits中获取信息,我们模拟一个死锁的场景,下面可以直接通过data_lock_waits 来获取到当时的一个信息,这个信息就是被最后被KILL掉的那个查询的信息。 主要就是两个点 1 requesting_thread_id 2 blocking_thread_id 我...
得到可能的死锁事务语句后,我们接下来模拟事务语句执行顺序,通过performance_schema.data_locks和performance_schema.data_lock_waits观察语句执行时持有/等待锁信息进行死锁验证。data_locks之前已经说过,我们现在介绍data_lock_waits各字段的含义: REQUESTING_ENGINE_LOCK_ID: 等待获取锁的锁ID。 REQUESTING_ENGINE_TRANSACTI...
跑批执行到 insert into t1 select * from t2 时,有一个定时任务运行 MySQL 巡检脚本,巡检脚本执行到 select * from performance_schema.data_locks、select * from performance_schema.data_lock_waits 会导致 MySQL hang,一开始只是某些 SQL 执行无响应,最终 MySQL 无法登录。 分析过程 1. 开始 hang 时的线程...
结合data_lock_waits表可以看出,线程ID为445的会话等待xucl.t1表的主键上的排他记录锁 二级索引|next-key lock 查看data_locks表和data_lock_waits表 mysql> select * from data_locks;+---+---+---+---+---+---+---+---+---+---+---...
data:6,72 rows inset,1 warning (0.00 sec)通过表INNODB_LOCKS查看每张表上锁的情况后,用户就可以来判断由此引发的等待情况。当时当事务量非常大,其中锁和等待也时常发生,这个时候就不那么容易判断。但是通过表INNODB_LOCK_WAITS,可以很直观的反应当前事务的等待。表INNODB_LOCK_WAITS由四个字段组成,如下表...
Example data lock wait information: mysql>SELECT*FROMperformance_schema.data_lock_waits\G***1. row***ENGINE:INNODB REQUESTING_ENGINE_LOCK_ID:140211201964816:2:4:2:140211086465800 REQUESTING_ENGINE_TRANSACTION_ID:1555 REQUESTING_THREAD_ID:47 REQUESTING_EVENT...
此时未发生锁等待,所以data_lock_waits为空。 时刻t3: tx2执行语句2,持有锁: 表t_user的共享意向锁(IS)。 索引idx_age上age = 30所在的next-key lock: (20, 30]。对应行锁为共享锁。 索引idx_age上最右边的next-key lock: (30, +∞]。 主键行级共享锁(S, REC_NOT_GAP), 对应行id = 2; 此时...
innodb_lock_waits表则由performance_schema.data_lock_waits表代替。 三张表具体信息: 其中比较常用的一些列: trx_id:InnoDB存储引擎内部唯一的事物ID trx_status:当前事务的状态 trx_status:事务的开始时间 trx_requested_lock_id:等待事务的锁ID trx_wait_started:事务等待的开始时间 ...
LOCK_TYPE: 锁类型(TABLE/RECORD) LOCK_MODE: 锁模式(IX: 表意向排它锁,X: NextKey-Lock,X, REC_NOT_GAP: 行锁,X,GAP: 间隙锁,LOCK_INSERT_INTENTION插入意向锁) LOCK_STATUS:GRANTED、WAITING LOCK_DATA: 锁的数据,当LOCK_TYPE为RECORD时才会有值(如果是聚族索引则直接显示主键,如果是非聚族索引则是,...
通过INFORMATION_SCHEMA.INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS 三个表获取事务与锁的信息 原文 #先查询 INNODB_TRX 表,看看都有哪些事务 mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G *** 1. row *** trx_id: 17778 -- 当前事务ID trx_state: LOCK WAIT -- 处于锁等待状态...