如何防止“注意:表格不支持优化,重新创建+分析”

时间:2016-09-26 07:29:44

标签: mysql innodb

我的问题是我在Cronjob中为InnoDB表运行mysqlcheck,如果每次收到包含数千条这些消息的电子邮件,我都会轻易忽略可能的错误消息。

--silent也无济于事。

我最好的尝试到现在为止 | grep -v "note :" 但我担心我可以剥夺更重要的“笔记”......

但即便如此,mysqlcheck列出了数据库中的每个表,这些表已经是一个非常长的列表,仍然隐藏了可能的错误消息。

我无法找到有关mysqlcheck退出代码的任何相关信息,例如,如果确实有问题,只需发送电子邮件。

所以问题是: “如何运行mysqlcheck并获得 RELEVANT 输出”?

1 个答案:

答案 0 :(得分:1)

简单的答案是:不要在InnoDB上使用mysqlcheck。并且只使用InnoDB。

错误消息来自OPTIMIZE TABLE,这对InnoDB来说几乎无用。 (它有一些用于MyISAM。)InnoDB擅长保持其表格的正常形状。也就是说,99.9%的时间OPTIMIZE是浪费时间。

<强>附加物

当然,InnoDB变得支离破碎。任何BTree都会碎片化。 (这包括MyISAM索引,这是由BTree组织的。)BTrees,即使经过大量修改,往往会从0%碎片化到31%“免费”空间的平均,然后留在那里。当然,你可以进行碎片整理以取消它,但是进一步的活动会很快失去它。这不值得努力和停工。

31%不会转化为可忽略不计的减速。是的,它是一块磁盘空间,但是优化需要100%来完成它的任务,因为它复制了表。所以,你显然有足够的磁盘空间。