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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM