MySQL 锁表解锁
1. 执行show full processlist观察state和info两列,查看有哪些线程在运行。
2.使用kill命令+对应线程前面id杀死卡死的线程。
其他的方式:
-- 查询是否锁表
-- 查询进程
show processlist ;
--查看当前运行的所有事务
如果情况紧急,此步骤可以跳过,主要用来查看核对:
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
--查看当前出现的锁
如果情况紧急,此步骤可以跳过,主要用来查看核对:
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
-- 查看等待锁的对应关系
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
看事务表INNODB_TRX中是否有正在锁定的事务线程,看看ID是否在show processlist的sleep线程中。如果在,说明这个sleep的线程事务一直没有commit或者rollback,而是卡住了,需要手动kill掉。搜索的结果中,如果在事务表发现了很多任务,最好都kill掉。
-- 查询到相对应的进程,然后杀死进程
kill id; -- 一般到这一步就解锁了
参考:https://www.jianshu.com/p/aa99df051c8f
https://cloud.tencent.com/developer/article/2003116