mysql flush table 对查询的影响

今天本来想在开发测试机上做测试,测试过程中需要flush table ,不过让人想不到的是执行后居然卡住不动了。于是赶紧开启另一个会话查看情况如下:



原来数据库里还有一个慢查询(已经执行了2w多秒),然后继续执行show processlist 观察,更多惊喜还在后面:




所有的查询都在“waiting for table flush” ,够恐怖的吧(这让人想起了waiting for matedata lock),更甚至就算kill 了 flush table 的会话,阻塞依然。最后是直接kill了慢查询才恢复正常。

这里让我们想到一个问题,即很多备份包括mysqldumper,xtrabackup 在备份期间都有flush table with read lock 的操作,如果在备份期间出现了慢查询并且慢查询长时间阻塞,那么可能就会出现比较恐怖的阻塞情况,因此避免的情况可以设置kill超时时间的慢查询。 

后来一直想弄明白具体的原因,也巧在网上找到了一篇文章在源码层面进行了解读具体见:mysql阻塞初探


又一个愉快的周末!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值