2012-03-16 33 views

回答

5

根据MySQL的有关MySQL 5.6信息:

的DATA_FREE列显示字节InnoDB表

对于早期版本一样5.5的自由空间:

的DATA_FREE列显示InnoDB表的可用空间(以字节为单位)。

对于MySQL群集,DATA_FREE显示磁盘上分配的空间空间, 但磁盘数据表或磁盘片段未使用的空间。 (在存储器数据 资源使用由DATA_LENGTH列中报告。)

+0

明白了。谢谢。 – bananaaus 2012-03-18 22:15:15

0

随着innodb_file_per_table = OFF所有InnoDB表都存储在相同的表空间。 DATA_FREE(已分配但未使用的字节数)将针对该单个表空间进行报告。

阅读http://dev.mysql.com/doc/refman/5.0/en/innodb-file-space.html

“当你发出一个SHOW TABLE STATUS 声明要求在表空间的可用空间,InnoDB的报告说,肯定是在表空间中自由程度的InnoDB 始终保留一定程度上进行。清理和其他内部目的;这些保留区域不包含在可用空间中。“

因此,对于InnoDB表中的表空间可用空间进行报告,并且由于所有表共享 相同的表空间,结果相同。

+0

啊......谢谢纳文。 – bananaaus 2012-03-18 22:14:34

8

DATA_FREE-已分配但未使用的字节数。 与数据库文件中存储的数据相比,它是数据库文件的大小。 PHPMyAdmin将此信息显示为“表格中的开销”。

但是对InnoDB来说这很重要 - “InnoDB表报告表所属表空间的可用空间,对于位于共享表空间中的表,这是共享表空间的可用空间。”因此,对于典型的InnoDB设置('innondb_file_per_table'未设置),您将获得所有表的可用空间,而不是单个表。

参见:http://dev.mysql.com/doc/refman/5.5/en/tables-table.htmlhttp://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

+0

明白了。谢谢。 – bananaaus 2012-03-18 22:15:08