0
点赞
收藏
分享

微信扫一扫

MySQL出现Waiting for table metadata lock

搬砖的小木匠 04-11 15:00 阅读 17

当MySQL出现Waiting for table metadata lock状态时,表示当前线程在等待表的‌元数据锁(MDL)‌。MDL用于保护数据库对象(如表、视图、存储过程)的结构一致性,尤其在执行DDL操作(如ALTER TABLE)或长时间未提交事务时容易触发‌。

-- 查看所有进程状态(过滤目标表和'Waiting for table metadata lock'状态)
SHOW FULL PROCESSLIST;
  1. ‌定位阻塞源‌

通过以下命令检查活跃事务和进程:

-- 查看未提交事务(重点关注trx_state='RUNNING'的会话)
SELECT * FROM information_schema.INNODB_TRX;
-- 生成需KILL的阻塞会话列表(针对MyISAM表需结合实际情况)
SELECT CONCAT('KILL ', trx_mysql_thread_id, ';') AS kill_cmd
FROM information_schema.INNODB_TRX
WHERE trx_state = 'RUNNING' AND trx_operation_state = 'fetching rows';
  1. ‌终止阻塞会话‌

根据查询结果,终止未提交事务或长时间阻塞的会话:

KILL <阻塞会话ID>;

举报

相关推荐

0 条评论