MySQL出现死锁时第一时间需要定位到是哪一条SQL、哪一个线程导致表锁死,然后杀掉这个线程,当然还需要分析编码或数据库设计不合理导致死锁的因素。
MySQL执行如下语句查看当前运行的事务:
SELECT * FROM information_schema.innodb_trx;
其中需要关注的是trx_state和trx_mysql_thread_id两列,将trx_state列显示lock状态的事务线程trx_mysql_thread_id杀死。
例如trx_mysql_thread_id=100的线程锁死,在控制台执行
KILL 100;
杀死事务线程即可