记一次MySQL出现Waiting for table metadata lock的原因、排查过程与解决方法
2024-09-06 22:45:58
任务背景:将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的含义
最新文章
- Code HighLight
- paip.注册java程序为LINUX系统服务的总结。
- UVA 11733	 Airports
- 2013华为校园招聘java实现(大家水个回复啊)
- MYSQL 体系结构图-log (踏雪无痕) (UC技术博客)
- LNMP安装包sh脚本
- Java程序中与MongoDB建立连接~小记
- Java 循环和函数(方法)
- Spring+MVC+Mybatis整合
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
- Java分布式锁看这篇就够了
- systemverilog soft constraint
- python中实现排序list
- Install the mongdb
- 关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中
- (转)Silverlight调用的JS方法返回对象数组的处理方法
- MySQL 主从复制相关参数
- 最新自然语言处理(NLP)四步流程:Embed->;Encode->;Attend->;Predict
- Android 运行 Linux 可执行程序
- 遇到问题----mongodb-----mongorestore报错too many open files甚至mongo服务崩溃