在MySQL中,“Overhead”是什么意思?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (4)
  • 关注 (0)
  • 查看 (103)

什么是MySQL的“Overhead”?

提问于
用户回答回答于

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

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

用户回答回答于

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

用户回答回答于

它就是一个表格数据文件的实际大小,相对于同一个数据文件的理想大小(就像刚刚从备份中恢复时那样)。

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

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

你可以摆脱的overhead运行OPTIMIZE TABLE,将压缩你的表和索引。

用户回答回答于

Overhead是数据库用来运行一些查询的临时磁盘空间,所以如果这个数字非常高

你可以比较“optimize table”与硬盘碎片整理。

我引用:

随着时间的推移,每个数据库都将需要某种形式的维护,以保持最佳性能水平。清除已删除的行,重新排序,压缩,管理索引路径,碎片整理等在mysql和其他数据库中被称为优化(OPTIMIZATION)。例如,IBM DB2 / 400将其称为REORGANIZE PHYSICAL FILE MEMBER。 这就像改变汽车上的油或轮胎一样。你可能认为你真的不需要,但是通过这样做,你的赛车运行得更好,汽油里程更快等等。获得大量里程的赛车需要更频繁的调整。

扫码关注云+社区

领取腾讯云代金券