mysql修改表结构锁表导致服务卡死

背景
一个同事在执行一个代码的时候,对A表进行大量的查询,我在这时候,正好需要对这个表中的某一个的字段进行相应的修改,也就是 alert table 的操作,我在执行的时候,发现数据库卡住了,然后执行强制退出了数据库的链接工具,在进去数据库的时候,就发现了大量的sql语句发生了阻塞的问题。
出现了这种 Waiting for table metadata lock的等待场景,导致了后台服务查询缓慢,卡住。
原因分析
因为 alter table的时候导致锁表,查询的时候,就进行了排队,发生了阻塞,当程序强制退出的时候,就又是的刚才alter table的事务没有提交,导出一直发生阻塞,造成了大量的进程发生了阻塞 。

解决方式:
1.show processlist
发现ALTER TABLE这条语句导致大量查询语句处于等待状态
2.kill processid 将处于处于等待的进程杀掉!
3.再次查询的时候就不会阻塞了
4.如果在解决不了 直接重启一下数据库!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值