1. 查看当前数据库的线程情况:
SHOW FULL PROCESSLIST;
2. 查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程
SELECT * FROM information_schema.INNODB_TRX;
trx_mysql_thread_id是否在1.(show full processlist)里面的sleep线程中
如果在,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉。
3. kill掉被食物卡住的线程
kill 44;
注:此方法治标不治本,如果是事务未提交还是要找到没提交的逻辑,修改之,才能把问题根除!
注:相关知识点
1.导致mysql锁的原因:
执行DML操作没有commit,再执行删除操作就会锁表。
在同一事务内先后对同一条数据进行插入和更新操作。
表索引设计不当,导致数据库出现死锁。
阻塞DDL,继而阻塞所有同表的后续操作。
2.查看mysql是否自动提交事务
select @@autocommit