文章目录
- 一、MySQL死锁排查
- 1、查看正在进行中的事务
- 2、查看正在锁的事务
- 3、查看等待锁的事务
- 4、查询是否锁表
- 5、查看最近死锁的日志
- 6、杀死死锁
本文是基于Mysql8.0进行讲解。
本文只讲解如何查询数据库中是否有死锁及死锁的解决,若想了解更多关于死锁的信息,可参考文章 《Mysql查看锁信息、Mysql锁信息查询、Mysql死锁排查及解决》
一、MySQL死锁排查
1、查看正在进行中的事务
SELECT * FROM information_schema.INNODB_TRX
示例如下:
注意:当死锁时需要杀的进程id是
trx_mysql_thred_id
字段
2、查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3、查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
4、查询是否锁表
SHOW OPEN TABLES where In_use > 0;
在发生死锁时,这几种方式都可以查询到和当前死锁相关的信息。
5、查看最近死锁的日志
show engine innodb status
6、杀死死锁
当遇到死锁时,需要手动杀掉进程,通过上面几种方式找到进程号,然后执行以下命令杀掉进程。
kill 进程号
-- 强制杀掉进程
kill -9 进程号
示例:
kill 11539