在我的MySQL数据库中,我看到了这些统计信息:
Type Usage
Data 16,384 Bytes
Index 32,768 Bytes
Overhead 405,0 MB
Effective -424,624,128 Bytes
Total 49,152 Bytes
当我尝试命令check table
,ALTER TABLE 'mytable' ENGINE = INNODB
,OPTIMIZE TABLE
时,开销没有任何变化。
为什么没有发生任何事情,我应该担心,我应该什么时候担心?我已经看到其他问题表明“当开销过大时要担心”。什么太大了?
答案 0 :(得分:12)
PHPMyAdmin中的开销由SHOW TABLE STATUS返回的“Data_free”列计算。 它实际上是在MySQL文档中解释的: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Data_free:已分配但未使用的字节数。
从MySQL 5.1.24开始,InnoDB也会显示此信息 表(以前,它在Comment值中)。 InnoDB表报告 表所属的表空间的可用空间。为一个 表位于共享表空间中,这是可用空间 共享表空间。如果您使用多个表空间和表 有自己的表空间,可用空间仅用于该表。自由 space表示完全免费的1MB范围减去安全数量 余量。即使可用空间显示为0,也可以插入 只要不需要分配新的扩展区,就可以使用行。
然而对于InnoDB来说,重要的是“InnoDB表报告表所属的表空间的可用空间。对于位于共享表空间中的表,这是共享表空间的可用空间。”因此,通过典型的InnoDB设置(未设置'innondb_file_per_table'),您将获得所有表的可用空间,而不是单个表。这可能就是phpMyAdmin忽略/丢弃信息的原因,或者在Optimize表上没有任何反应。
您应该阅读此post,其中清楚地解释了如何优化innodb中的表格。