首页 新闻 搜索 专区 学院

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

0
悬赏园豆:5 [已解决问题] 解决于 2021-09-17 13:36
环境: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)
小黑狗cathy的主页 小黑狗cathy | 初学一级 | 园豆:84
提问于:2021-07-21 13:43
< >
分享
最佳答案
0

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

收获园豆:5
jun-x | 菜鸟二级 |园豆:207 | 2021-09-17 09:09

MySQL 5.7之后的innodb表推荐使用ALTER TABLE ds_log_detail ENGINE=InnoDB;来对表空间碎片进行优化。

jun-x | 园豆:207 (菜鸟二级) | 2021-09-17 09:16

需要先删除ds_log_detail.idb文件,再执行碎片优化吗?

小黑狗cathy | 园豆:84 (初学一级) | 2021-09-17 09:27

@小黑狗cathy: 不用删除

jun-x | 园豆:207 (菜鸟二级) | 2021-09-17 09:48

@jun-x: 好的,多谢啦。

小黑狗cathy | 园豆:84 (初学一级) | 2021-09-17 09:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册