Mysql优化——MySQL表的碎片整理和空间回收

环境 mysql 5.7
存储引擎 InnoDB

1.原由

前段时间在本地批量处理数据,单表有100W左右。但是处理中有出错的情况。所以就删了重新导入,来来回回处理了很多次。后来发现在查询时非常的慢。

2.找问题

最开始以为时left join的问题,查看的执行计划都走了索引,没觉得有多大问题。但是查询就是非常的慢,在多次尝试下发现单表count都慢的过分。一个单表count可能需要执行好几分钟甚至更久。
后来在请教了一些大佬之后,得到了解决方案。

表碎片太多,可以尝试重建索引或者,修复表。

3.解决

执行表碎片整理语句

-- t_27是表名
ALTER TABLE t_27 ENGINE = Innodb 

整个碎片整理花了2800s左右

执行前的索引文件400MB,数据文件400MB,单表count一直在执行,没有得到结果
执行后的索引文件200MB,数据文件200MB,单表count第一次3.8s,第二次因为查询缓存0.1s

提升非常的明显。

4.感谢

感谢各位大佬的指点,感谢MySQL表的碎片整理和空间回收小结的文章

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值