在MySQL中,“Overhead”是什么意思,什么是坏的,如何解决?

简单的问题,但它一直唠叨我一会儿现在….

什么是MySQL的“开销”,我应该担心吗?

不要点击“优化表”修复它的真实?

看起来,开销是数据库用来运行一些查询的临时磁盘空间,所以如果这个数字变得非常高,你应该只是担心。

您可以比较“优化表”与硬盘碎片整理。

我引用:

随着时间的推移,每个数据库都将需要某种forms的维护,以保持最佳性能水平。 清除已删除的行,重新sorting,压缩,pipe理索引path,碎片整理等在mysql和其他数据库中被称为优化(OPTIMIZATION)。 例如,IBM DB2 / 400将其称为REORGANIZE PHYSICAL FILE MEMBER。

这就像改变汽车上的油或调整一样。 你可能认为你真的不需要,但是通过这样做,你的赛车运行得更好,汽油里程更快等等。获得大量里程的赛车需要更频繁的调整。 获得大量使用的数据库要求相同。 如果您正在执行大量的UPDATE和/或DELETE操作,特别是如果您的表具有可变长度列(VARCHAR,TEXT等),则需要保持调整。

如果您正在讨论的是phpMyAdmin调用的overhead ,那么它就是表数据文件的实际大小,与相同数据文件的理想大小相当(就像刚从备份中恢复时那样)。

出于性能原因, MySQL在删除或更新行之后不会压缩数据文件。

这种overhead对于表扫描是不利的,即当你的查询需要遍历所有的表值时,它将需要查看更多的空白空间。

你可以通过运行OPTIMIZE TABLE来消除overhead ,这会压缩你的表和索引。

开销是表的Data_free ,即分配但未使用的字节数。 我们可以通过SQL命令SHOW TABLE STATUS来find它。 这是您的表格分配的大小的可用空间。

优化表可以是非常有问题的。 例如,如果表在网站上使用严重。

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

删除大部分MyISAM或ARCHIVE表之后,或者对具有可变长度行(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)的MyISAM或ARCHIVE表进行许多更改之后。 删除的行保留在链接列表中,随后的INSERT操作将重新使用旧的行位置

我相信我已经证实了这种行为。 这确实是非常有用的。