mysql表碎片整理

第一步:查看表信息

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
posted @ 2020-12-14 22:35  vaen  阅读(931)  评论(0)    收藏  举报