Per qualche motivo, tutte le tabelle InnoDB nel mio server MySQL vengono elencate come frammentate quando eseguo mysqltuner. Ho installato il server solo poche ore fa (su OSX Lion) e contiene un sacco di nuovi dati importati da file batch.
Ho provato a convertire tutte le tabelle in un database in MYISAM e sicuramente il numero di tabelle frammentate è diminuito. Stranamente, non appena ho convertito quelle tabelle in InnoDB, il conteggio frammentato delle tabelle è tornato indietro. Questo è contrario alla mia ricerca finora che suggerisce che la corsa ALTER TABLE table_name ENGINE=INNODB;dovrebbe riparare la frammentazione.
Dopo un po 'di googling ho corso:
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
Che presumibilmente elenca tutte le tabelle frammentate (in effetti restituisce lo stesso numero di risultati degli output mysqltuner per il conteggio delle tabelle frammentate). Ogni singola voce ha esattamente lo stesso numero nella data_free_MBcolonna (attualmente 7.00000000).
È davvero un vero problema o qualcosa che mysqltuner sta facendo male? Se si tratta di un problema, come posso risolverlo?
MODIFICARE
Sto diventando sempre più sospettoso di essere un idiota e che la frammentazione di 7 MB sia per l'intero file, non per ogni tabella. Qualcuno può confermare se ciò sarebbe il caso?
[!!] Total fragmented tables: 2314che sono abbastanza sicuro che indica un problema (con i doppi punti esclamativi rossi)