粗糙版
-- mysql死锁排查
-- 1、排查锁阻塞信息-从里面查找阻塞线程id-- 深度诊断 InnoDB 引擎状态的核心命令
从里面搜索active就可以看到允许线程的存活时间
SHOW ENGINE INNODB STATUS;
-- 2、查询阻塞线程的信息
SELECT * FROM information_schema.processlist
WHERE id = 875724448; -- 替换为阻塞线程ID
-- 3、确认事务无影响后杀死事务进程
KILL 33084655;
完善版
-- 1、查看存储引擎状态,方便检查是否死锁
show engine innodb status;
-- 手动排查死锁(mysql8之前)
-- 1、查询当前锁信息
select * from INFORMATION_SCHEMA.innodb_locks;
select * from INFORMATION_SCHEMA.innodb_lock_waits;
-- 2、找出等待的事务 trx_state = LOCK_WAIT
select trx_id,trx_state "事务状态",trx_started,trx_mysql_thread_id "线程id",trx_query from INFORMATION_SCHEMA.innodb_trx;
-- 3、杀死线程id
kill 1234;