Mysql/RDS删除后文件并没有减小,数据碎片所致

表碎片计算方法及整理过程
我们有时会在表中删除一些大量的无用数据,但发现数拆文件并没有减小,这是因为删除后在数据文件中遗留了大量的数据碎片所致。
问题分析:使用delete删除数据库的时候,Mysql并不会把数据库文件真正删除,而只是将数据库文件标识位删除,也没有整理数据文件,因此不会彻底释放表空间。delete删除操作会产生数据
问题解答:
本文档以xx_act表为例,本内容是测试库,delete动作较少所以数据不大。
碎片大小=数据总大小-实际表空间文件大小数据总大小=datalength+indexlength=3538944实际表空间文件大小=rows*avg_row length=2670080碎片大小=(3538944-2670080)/1024/1024=0.828Mshow table status like %tb activity%

清除碎片有两种方法
1.   alter table Table_Name engine=innodb;
2、备份原表数据,上删掉表,重新导入到新表中(与原表结构一模一样)