【0】核心表
sys.`innodb_lock_waits`
performance_schema.events_statements_history
performance_schema.data_locks
performance_schema.data_locks_wait
【1】查看锁信息
performance_schema.data_locks
performance_schema.data_locks_wait
线上mysql版本为8.0.11,对于最近的几个版本越来越像Orale了,有了较为丰富的系统字典,也可以查看系统的等待事件,现在线上出现被锁语句的情况也可以通过数据字典直接查询出来了,在此记录下以供参考。
首先查看系统锁情况,下面这条语句可以看到持有锁的线程以及线程ID,这里需要注意下,session_id也就是show processlist查询出来的链接ID,在这个表里表现为PID,同时该表也记录了trx_id,最后还给出了解决方案也就是如何kill持有锁的进程。
mysql> SELECT * FROMsys.`innodb_lock_waits` \G*************************** 1. row ***************************wait_started:2019-01-28 14:27:03wait_age:00:00:03wait_age_secs