第一步:查看表信息
use 库名
show table status like '表名';
或
show table status like '表名' \G
建议加上参数\G优化展示,不加此参数,没法直视查询结果。
第二步:计算碎片
公式:
数据总大小 = data_length + index_length
实际表空间文件大小 = rows X avg_row_length
碎片大小 = (数据总大小 — 实际表空间文件大小 )/1024/1024 = xxx MB
第三步:碎片清理
方法①: 简单无脑
alter table table_name engine = innodb
然后备份原表数据,删掉,再导入
方法②:使用percona-toolkit工具集
1.捕获线上运行慢的sql
使用pt-query-digest
2.online DDL
./pt-online-schema-change --user=root --password = root --host=localhost --alter="ENGINE = Innodb" D=数据库名,t=表名 --execute