Untuk beberapa alasan, semua tabel InnoDB di server MySQL saya terdaftar sebagai terfragmentasi ketika saya menjalankan mysqltuner. Saya hanya menginstal server beberapa jam yang lalu (pada OSX Lion), dan memiliki banyak data segar yang diimpor dari file batch di dalamnya.
Saya mencoba mengubah semua tabel dalam satu database ke MYISAM, dan tentu saja jumlah tabel terfragmentasi turun. Anehnya, begitu saya mengonversi tabel-tabel itu kembali ke InnoDB, jumlah tabel yang terfragmentasi kembali naik. Ini bertentangan dengan penelitian saya sejauh ini yang menunjukkan bahwa berlari ALTER TABLE table_name ENGINE=INNODB;
harus memperbaiki fragmentasi.
Setelah sedikit Googling saya berlari:
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
Yang seharusnya mencantumkan semua tabel terfragmentasi (memang mengembalikan jumlah hasil yang sama dengan output mysqltuner untuk jumlah tabel terfragmentasi). Setiap entri memiliki nomor yang sama persis di data_free_MB
kolom (saat ini 7.00000000).
Apakah ini sebenarnya masalah nyata atau sesuatu yang dilakukan oleh mysqltuner? Jika ada masalah, bagaimana cara memperbaikinya?
EDIT
Saya menjadi semakin curiga bahwa saya idiot dan fragmentasi 7MB adalah untuk seluruh file, bukan untuk setiap tabel. Adakah yang bisa mengkonfirmasi apakah itu masalahnya?
[!!] Total fragmented tables: 2314
yang saya cukup yakin menunjukkan masalah (dengan tanda seru merah ganda)