简单的问题,但它现在一直唠叨我......
MySQL中的“开销”是什么,我应该担心吗?
单击“优化表”会将其修复为真实吗?
答案 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操作重用旧的行位置。<
我相信我已经证实了这种行为。它确实非常有用。