优化innodb表

时间:2010-05-12 04:00:11

标签: mysql innodb

当我在innodb表上运行optimize table时,我收到此消息。这是否表示该表已经过优化,但方式不同?

“table | optimize | note |表格不支持优化,而是重新创建+分析而不是|”

1 个答案:

答案 0 :(得分:22)

来自documentation

对于InnoDB表,OPTIMIZE TABLE映射到ALTER TABLE,后者重建表以更新索引统计信息并释放聚簇索引中未使用的空间。从MySQL 5.1.27开始,当你在InnoDB表上运行它时,它会显示在OPTIMIZE TABLE的输出中,如下所示:

mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-----------------------------------------------------------
| Table    | Op       | Msg_type | Msg_text                                                    
+----------+----------+----------+-----------------------------------------------------------    
| test.foo | optimize | note     | Table does not support optimize, doing recreate + analyze ...
| test.foo | optimize | status   | OK                                                            
+----------+----------+----------+-----------------------------------------------------------

您可以通过使用--skip-new或--safe-mode选项启动mysqld,使OPTIMIZE TABLE在其他存储引擎上工作。在这种情况下,OPTIMIZE TABLE只是映射到ALTER TABLE。