如何在mysql表

时间:2017-07-27 17:10:02

标签: mysql optimization innodb

每当我们向其中插入数据时,MySQL的两个InnoDB表就会碎片化。

之后,当我使用optimize table命令时,它会被碎片整理。

有没有办法避免碎片,因为我想在表中添加数千行?

1 个答案:

答案 0 :(得分:1)

BTrees自然倾向于仅满69%。和它一起生活。

此外,可用的统计信息(SHOW TABLE STATUSinformation_schema中的等效指标)可能会吓到您。 Data_free通常是1MB的倍数。和它一起生活。而这只是它暴露的碎片!

对InnoDB进行碎片整理主要是浪费时间,因为它会因INSERT / DELETE / UPDATE而迅速碎片化。甚至SELECT!

为什么SELECT?挂起可能被其他事务使用的行,以遵循“事务隔离”的语义规则。

OPTIMIZE TABLE已将某些用于MyISAM表。我确定了2个用例,其中每月碎片整理是有用的(在多个安装中可能有5000个表)。我还没有看到在InnoDB中使用它的重要用例。