我不完全确定information_schema.TABLES.DATA_FREE在MySQL中的含义。
有人可以帮我理解吗?
谢谢。
答案 0 :(得分:8)
DATA_FREE-已分配但未使用的字节数。 与数据库文件中存储的数据相比,它是数据库文件的大小。 PHPMyAdmin将此信息显示为“表格中的开销”。
然而对于InnoDB而言,这很重要 - “InnoDB表报告表所属的表空间的可用空间。对于位于共享表空间中的表,这是共享表空间的可用空间。”因此,通过典型的InnoDB设置(未设置'innondb_file_per_table'),您将获得所有表的可用空间,而不是单个表。
参考:http://dev.mysql.com/doc/refman/5.5/en/tables-table.html和http://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表,会报告表空间中的可用空间,并且所有表都共享 相同的表空间,结果是相同的值。