Mysql:什么是碎片表,为什么我们应该对它们运行OPTIMIZE?

时间:2012-04-03 06:04:14

标签: mysql optimization

最近我们开始优化一个从未遵循任何标准的数据库。 我们要做以下事情。

    clean up of unused tables.
    optimizing data types and indexes.
    tuning slow queries. 
    evaluating my.cnf configurations with mysqltuner.pl and similar ones

在这个过程中,我遇到了OPTIMIZING碎片表。 什么是这个碎片表,这将如何影响功能和性能。 为什么我要在这些表上运行OPTIMIZE ......?

我相信这根本不会影响功能。如果没有,请纠正我。

提前感谢您的回复。 问候, UDAY

1 个答案:

答案 0 :(得分:6)

当您删除记录(或将它们更新为更小)时,该表将包含“空洞”,其中包含空数据块。如果它们适合在孔中,那些将填充新数据,但是根据您使用该表的方式,可能存在大量浪费的空间。这样做并不好,因为您现在需要从磁盘中读取更多块以获取相同数量的有用信息。

在这些碎片表上运行optimize命令会移动记录以消除表中的漏洞。

在进行大规模维护或更新操作(例如批量删除)后,通常最好这样做。