在MySQL中,information_schema.TABLES.DATA_FREE是什么意思?

时间:2012-03-16 04:23:05

标签: mysql

我不完全确定information_schema.TABLES.DATA_FREE在MySQL中的含义。

有人可以帮我理解吗?

谢谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

根据MySQL关于MySQL 5.6的信息:

  

DATA_FREE列显示InnoDB表的空闲字节数

对于5.5之类的早期版本:

  

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

     

对于MySQL Cluster,DATA_FREE显示磁盘上分配的空间,   磁盘上的磁盘数据表或片段未使用但未使用。 (在记忆中   数据资源使用情况由DATA_LENGTH列报告。)

答案 2 :(得分: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表,会报告表空间中的可用空间,并且所有表都共享 相同的表空间,结果是相同的值。