我们有一个大型的MySQL5.7生产表。我们试图降低Data_free值。
我们通常只是在各种数据库表上运行优化命令,将其缩小到7MG大小。但是,对于一个表,我们无法做到这一点(我们正在使用innodb_file_per_table)。
是否有办法迫使系统将值降到正常大小?
发布于 2022-07-13 17:52:05
你在用ENGINE=InnoDB吗?该表是否已分区?
MySQL的InnoDB在预期插入新行时分配“区段”。这通常(并不总是)显示为Data_free正好是4MB、5MB、6MB或7MB。你无法摆脱它。
你注意到OPTIMIZE TABLE很少缩小任何一张桌子吗?您注意到了吗?操作阻止了桌面上的其他活动吗?通常,对于InnoDB表来说,该命令是无用的。
Data_free是衡量“碎片”和其他“空闲”空间的唯一可见指标。别为这事烦恼。
一个PARTITIONed“表”由多个“表”组成,每个分区一个。每个子表都可能有一些Data_free。因此,整个分区表可以有一个更大的Data_free。同样,这个Data_free不能缩小(少数情况除外)。
https://serverfault.com/questions/1105470
复制相似问题