zoukankan      html  css  js  c++  java
  • 记一次MySQL出现Waiting for table metadata lock的原因、排查过程与解决方法

    任务背景:将sql文件通过shell直接导入到mysql中执行(还原)

    bug表现:导入后java项目卡死

    过程:

      1.网上乱搜一通,无意间看到一篇文章,这篇文章说明了如何开启mysql的general_log,这个命令执行后可以打印mysql中执行的语句

      2.又乱搜一通,看到一个命令:show processlist,此命令可查看当前mysql的运行状态的详细信息,在mysql命令行执行后能看到当前卡住的详细信息:Waiting for table metadata lock

    分析:

      lock这个词就很关键了,必定是因为某些操作导致锁住了表或者行,才导致了接下来我要做的操作(删除表drop table A<Innodb, REPEATABLE-READ>)卡死,

      通过general_log,可以看到在做还原功能时先查询了一次table A,接着再做导入操作就卡死了。

    解决:

      分析到这就很简单了,把查询操作替换成另一种可实现的方式就好了,具体做法因人而异,就不需我细说了。

    后话:

      需要了解一下Innodb、REPEATABLE-READ的含义

  • 相关阅读:
    Spring Boot 搭建项目阶段Group和Artifact的含义
    设置Mysql数据库账号密码以及时区
    反射
    线程与进程
    网络编程
    队列和栈
    linux下的mysql
    积累的关于linux的安装卸载软件基本命令
    各种url编码
    解决浏览器传值乱码
  • 原文地址:https://www.cnblogs.com/woooodlin/p/13494221.html
Copyright © 2011-2022 走看看