MySQL中Waiting for table metadata lock的解决方法

作者:じ☆ve宝贝

发布时间:2018-02-28T16:15:05

数据插入长时间阻塞,没有进度,通过 show processlist发现要操作的表Waiting for table metadata lock 状态的连接。首先就是先kill掉,但是问题依旧存在。

1、查看没有提交的事务

  • trx_state: 事务状态,一般为RUNNING
  • trx_started: 事务执行的起始时间,若时间较长,则要分析该事务是否合理
  • trx_mysql_thread_id: MySQL的线程ID,用于kill
  • trx_query: 事务中的sql
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx

一般只要kill掉这些线程,DDL操作就不会Waiting for table metadata lock。

kill trx_mysql_thread_id;