Mysql 5.5碎片整理不会减less碎片百分比

我们正在运行OPTIMIZE TABLE,但没有看到任何碎片减less。 他们高达120%至200%。

我正在使用这个计算碎片百分比:Data_Free /(Data_Length + Index_Length)

我的表正在使用INNODB引擎和“innodb_file_per_table”设置为1。

我错过了什么?

有什么改变与MySQL 5.5以上?

TIA

“OPTIMIZE TABLE”仅用于MyISAM表 – InnoDB不像MyISAM表那样受到“碎片”的影响。 因此,您不需要优化它们。

此外,您的计算方法不正确。 除了data + index长度外,还有更多的事情要做。

ALTER TABLE table_name ENGINE = InnoDB; 可以用在InnoDB表上来重build表,清理它的索引,在使用innodb_file_per_table = 1的情况下,调整表文件的大小。

除此之外,innodb自己照顾自己,在运行这个命令之后,你现在可能遭受的任何减速是因为你已经重build了在主键上索引的表,并且如果在db查找中更频繁地使用了副键,代替。

InnoDB倾向于理解稀疏的数据文件存储,可能需要比“一些人”更less的“固定”。