问题描述:
一般来说有什么事务卡死了mysql,直接show processlist找到相应进程然后kill掉就行,但这回很奇怪,show processlist看不到访问问题表的进程,问题表可以增删改,但做alter,drop,truncate等操作时就回wait卡死
show processlist可以找到卡死表的长事务,而未提交事务是看不到的需要在表information_schema.innodb_trx里查看
切到root账号,select * from information_schema.innodb_trx\G;
找到了几个一直在RUNNING的事务,把trx_mysql_thread_id全kill一遍,发现又出来了两条事务,但问题表已经解锁了。
这次遇到的算是第二层,即未提交的事务,再深一层可能有information_schema.innodb_trx里也没有的情况,这个可能是有一个失败的操作但获取的锁一直存在,这样就要在performance_schema.events_statements_current表里去找这个session