在MySQL中,“开销”意味着什么,它有什么不好,以及如何解决它?

时间:2009-02-19 16:04:32

标签: mysql overhead

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

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

单击“优化表”会将其修复为真实吗?

4 个答案:

答案 0 :(得分:138)

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

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

我引用:

  

随着时间的推移,每个数据库都会   需要某种形式的维护   保持最佳性能   水平。清除已删除的行,   重新排序,压缩,管理   索引路径,碎片整理等   在mysql中称为OPTIMIZATION   和其他数据库中的其他术语。   例如,IBM DB2 / 400将其调用   重新组织物理文件成员。

     

这有点像换油   你的车或调整。你可以   认为你真的没有,但是   这样做你的车运行得更好,   你得到更好的汽油里程等。一辆车   这需要很多里程   更经常地调整。一个数据库   大量使用需要相同。如果   你做了很多更新和/或   删除操作,尤其是如果   你的表有可变的长度   你需要的是列(VARCHAR,TEXT等)   保持'精心调整。

答案 1 :(得分:79)

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

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

这个overhead不利于表扫描,i。即当您的查询需要在所有表值上运行时,它需要查看更多的空白区域。

您可以通过运行overhead来摆脱OPTIMIZE TABLE,这将压缩您的表和索引。

答案 2 :(得分:7)

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

答案 3 :(得分:1)

优化表可能非常有问题。例如,如果在网站上大量使用该表。

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

  

删除MyISAM或ARCHIVE表的大部分内容,或对具有可变长度行的MyISAM或ARCHIVE表进行许多更改(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)。删除的行在链表中维护,后续的INSERT操作重用旧的行位置。<

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