Mysql基础知识-锁查看-Mysql8.0版本

核心表

sys.innodb_lock_waits

performance_schema.events_statements_history

performance_schema.data_locks

performance_schema.data_locks_wait

查看锁信息

performance_schema.data_locks

performance_schema.data_locks_wait

线上mysql版本为8.0.11,对于最近的几个版本越来越像Orale了,有了较为丰富的系统字典,也可以查看系统的等待事件,现在线上出现被锁语句的情况也可以通过数据字典直接查询出来了,在此记录下以供参考。

首先查看系统锁情况,下面这条语句可以看到持有锁的线程以及线程ID,这里需要注意下,session_id也就是show processlist查询出来的链接ID,在这个表里表现为PID,同时该表也记录了trx_id,最后还给出了解决方案也就是如何kill持有锁的进程。

查看当前被锁的语句

SELECT * FROM performance_schema.events_statements_history WHERE thread_id IN(
 
SELECT b.`THREAD_ID` FROM sys.`innodb_lock_waits` AS a , performance_schema.threads AS b
 
WHERE a.waiting_pid = b.`PROCESSLIST_ID`)
 
ORDER BY timer_start ASC;

看持有锁的语句

 
SELECT * FROM performance_schema.events_statements_history WHERE thread_id IN(
 
SELECT b.`THREAD_ID` FROM sys.`innodb_lock_waits` AS a , performance_schema.threads AS b
 
WHERE a.`blocking_pid` = b.`PROCESSLIST_ID`)
 
ORDER BY timer_start ASC;

相关文章:

一次死锁的过程分析和MySQL8.0版本记录了更完整的死锁日志

说明:内容详细,有5和8两个版本

你可能感兴趣的:(#,数据库技术-Mysql,mysql)