为什么所有MySQL InnoDB表都是碎片化的?
由于某些原因,当我运行mysqltuner时,我的MySQL服务器中的所有InnoDB表都被列为碎片。我仅在几个小时前(在OSX Lion上)安装了服务器,并且其中有一堆从批处理文件导入的新鲜数据。 我尝试将一个数据库中的所有表转换为MYISAM,并确保足够少的碎片表数量。但是,奇怪的是,一旦我将这些表转换回InnoDB,零碎的表计数又重新增加了。到目前为止,这与我的研究相反,后者的研究表明跑步ALTER TABLE table_name ENGINE=INNODB;应能修复碎片。 经过一番谷歌搜索后,我跑了: SELECT table_schema, table_name, data_free/1024/1024 AS data_free_MB FROM information_schema.tables WHERE engine LIKE 'InnoDB' AND data_free > 0 它应该列出所有碎片表(对于碎片表计数,它确实返回与mysqltuner输出相同数量的结果)。列中的每个条目均具有完全相同的编号data_free_MB(当前为7.00000000)。 这实际上是一个真正的问题,还是mysqltuner做错了什么?如果有问题,该如何解决? 编辑 我越来越怀疑我是个白痴,而7MB的碎片是针对整个文件的,而不是针对每个表的。任何人都可以确认是否会这样吗?