在 MySQL 中,“ Overhead”是什么意思,它的缺点是什么,以及如何修复它?

简单的问题,但它已经困扰我一段时间了... 。

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

点击“优化表”能真正修复它吗?

103899 次浏览

似乎开销是数据库用来运行某些查询的临时磁盘空间,所以只有当这个开销非常高时才应该担心。

你可以比较“优化表格”和你的硬盘碎片整理。

原话是:

随着时间的推移, 需要某种形式的维护 保持在 最佳状态频道 清除已删除的行, 重新排序、压缩、管理 索引路径、碎片整理等都是 在 mysql 中称为 OPTIMIZATION 以及其他数据库中的其他术语。 例如,IBM DB2/400调用它 重新组织物理文件成员。

有点像换油 你的车或正在调整。你可以 认为你真的不需要,但是 这样你的车就能跑得更好, 你会得到更好的油耗,等等,一辆车 需要大量的里程数 更经常地调整。一个数据库 得到大量使用需要同样的。如果 你正在做很多的更新和/或 删除操作,特别是如果 你的桌子长短不一 列(VARCHAR、 TEXT 等) ,您需要 让她保持清醒。

如果您所讨论的是 phpMyAdmin调用 overhead的内容,那么它就是一个表数据文件的实际大小相对于同一个数据文件的理想大小(就像从备份中恢复时一样)。

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

这个 overhead不利于表扫描,也就是说,当您的查询需要遍历所有表值时,它将需要查看更多的空白空间。

您可以通过运行将压缩表和索引的 OPTIMIZE TABLE来消除 overhead

开销是表的 免费资料,即 < strong > 已分配但未使用的字节数。 我们可以通过 SQL 命令 显示表格状态找到它。它是您的表分配大小的空闲空间。

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

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

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

我相信我已经证实了这种行为,而且它肯定会非常有用。