数据库
首页 > 数据库> > mysql锁表 Waiting for table metadata lock

mysql锁表 Waiting for table metadata lock

作者:互联网

1.问题现象

线上在对其他表进行修改的时候,无论是修改字段长度还是删除索引添加唯一约束都没有问题,但是唯独有一张表,无论进行什么表操作全部都会出现Waiting for table metadata lock。

2.问题分析

这种现象的一个可能的原因是某个事务持有着这个表的元数据锁,需要把这个事务找出来并kill掉,使其回滚,那么alter table和其后续被阻塞的操作包括读等才会顺利进行下去。

2.解决办法

通过以下命令查看当前所有的进程,并找出来出现表锁的原因及进程ID

select * from information_schema.PROCESSLIST where info is not null;

show processlist;

杀死阻塞进程ID

kill id;

如果进程数比较多不知道kill那个进程数则需要找出所有阻塞进程ID全部杀掉则可解决 Waiting for table metadata lock问题。

select concat("kill ",trx_mysql_thread_id,";") as kill_id from information_schema.INNODB_TRX where trx_lock_structs=0 and trx_weight=0 and trx_rows_locked=0 and trx_rows_modified=0 and trx_state='RUNNING';

标签:lock,trx,Waiting,kill,mysql,进程,table
来源: https://www.cnblogs.com/whiteY/p/16525622.html