mysql(mariadb)中的ibd文件过大,如何处理,可以删除吗?

环境:k8s集群,通过helm安装的mariadb数据库。
数据库分为主从,其中一个数据库实例有一张存储日志备份的表ds_log_detail,时间长了里面存了大量冗余数据,准备清理。数据表ds_log_detail已经做了定期清理。检查发现存储节点中存在ds_log_detail.idb文件。已经50G了。
本来打算 直接删掉,但是去网上查了一下资料,好像对数据库有影响。请问这个文件有什么用?可以删除吗?或者怎么能把这个文件变小?
![](https://img2020.cnblogs.com/q/2253197/202107/2253197-20210721131357892-1156254385.png)

回答

idb是表空间文件,一般的删除数据不会真正的把数据从表中删除,会转换成碎片。
SHOW TABLE STATUS LIKE "ds_log_detail"\G
查询结果中的Index_length是索引的数量,Data_length是碎片的数量。
OPTIMIZE TABLE ds_log_detail;
优化整理碎片,会锁表操作,建议要避开业务时间操作。

以上是mysql(mariadb)中的ibd文件过大,如何处理,可以删除吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>