• 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';
    
  • 相关阅读:
    复利计算5.0
    读《构建之法》第4章有感
    实验二作业调度模拟程序
    观看与评价
    结对2.03
    做汉堡
    复利计算--结对
    《构建之法》第四章
    复利单利计算器单元测试
    实验一、命令解释程序的编写实验
  • 原文地址:https://www.cnblogs.com/whiteY/p/16525622.html
Copyright © 2020-2023  润新知