Pour une raison quelconque, toutes les tables InnoDB de mon serveur MySQL sont répertoriées comme fragmentées lorsque j'exécute mysqltuner. J'ai installé le serveur il y a seulement quelques heures (sur OSX Lion), et il contient un tas de nouvelles données importées à partir de fichiers batch.
J'ai essayé de convertir toutes les tables d'une base de données en MYISAM, et bien sûr, le nombre de tables fragmentées a baissé. Curieusement, dès que j'ai reconverti ces tables en InnoDB, le nombre de tables fragmentées a de nouveau augmenté. Ceci est contraire à mes recherches jusqu'à présent qui suggèrent que la course ALTER TABLE table_name ENGINE=INNODB;
devrait corriger la fragmentation.
Après un peu de recherche sur Google, j'ai couru:
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
Qui répertorie soi-disant toutes les tables fragmentées (il retourne en effet le même nombre de résultats que les sorties mysqltuner pour le nombre de tables fragmentées). Chaque entrée a exactement le même numéro dans la data_free_MB
colonne (actuellement 7,00000000).
Est-ce réellement un vrai problème ou quelque chose que mysqltuner fait mal? Si c'est un problème, comment puis-je le résoudre?
ÉDITER
Je deviens de plus en plus soupçonneux d'être un idiot et que la fragmentation de 7 Mo concerne l'ensemble du fichier, pas chaque table. Quelqu'un peut-il confirmer si tel serait le cas?
[!!] Total fragmented tables: 2314
qui, j'en suis sûr, indique un problème (avec les doubles points d'exclamation rouges)