如何减少phpMyAdmin中显示的MySQL开销?

时间:2012-02-19 17:32:00

标签: mysql phpmyadmin

在我的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 tableALTER TABLE 'mytable' ENGINE = INNODBOPTIMIZE TABLE时,开销没有任何变化。

为什么没有发生任何事情,我应该担心,我应该什么时候担心?我已经看到其他问题表明“当开销过大时要担心”。什么太大了?

1 个答案:

答案 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中的表格。