Aus irgendeinem Grund werden alle InnoDB-Tabellen in meinem MySQL-Server als fragmentiert aufgeführt, wenn ich mysqltuner ausführe. Ich habe den Server erst vor einigen Stunden installiert (unter OSX Lion) und er enthält eine Reihe neuer Daten, die aus Batchdateien importiert wurden.
Ich habe versucht, alle Tabellen in einer Datenbank in MYISAM zu konvertieren, und die Anzahl der fragmentierten Tabellen ist mit Sicherheit gesunken. Seltsamerweise stieg die fragmentierte Tabellenanzahl wieder an, sobald ich diese Tabellen wieder in InnoDB konvertierte. Dies steht im Widerspruch zu meiner bisherigen Forschung, die darauf hindeutet, dass das Laufen ALTER TABLE table_name ENGINE=INNODB;die Fragmentierung beheben sollte.
Nach ein bisschen googeln rannte ich:
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
Was angeblich alle fragmentierten Tabellen auflistet (es gibt tatsächlich die gleiche Anzahl von Ergebnissen zurück wie mysqltuner-Ausgaben für die Anzahl der fragmentierten Tabellen). Jeder einzelne Eintrag hat genau die gleiche Nummer in der data_free_MBSpalte (derzeit 7.00000000).
Ist das tatsächlich ein echtes Problem oder macht mysqltuner etwas falsch? Wie behebe ich ein Problem, wenn es ein Problem ist?
BEARBEITEN
Ich werde immer misstrauischer, dass ich ein Idiot bin und dass die 7-MB-Fragmentierung für die gesamte Datei gilt, nicht für jede Tabelle. Kann jemand bestätigen, ob dies der Fall wäre?
[!!] Total fragmented tables: 2314, Ich bin mir ziemlich sicher, dass dies auf ein Problem hinweist (mit den doppelten roten Ausrufezeichen)