何らかの理由で、mysqltunerを実行すると、MySQLサーバーのすべてのInnoDBテーブルがフラグメント化されてリストされます。私は数時間前(OSX Lion)にサーバーをインストールしましたが、バッチファイルからインポートされた大量の新しいデータがサーバーに含まれています。
1つのデータベースのすべてのテーブルを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の断片化が各テーブルではなくファイル全体に対するものであることに、ますます疑わしくなっています。それが事実であるかどうか誰でも確認できますか?
[!!] Total fragmented tables: 2314、それは問題を示していると確信しています(二重の赤い感嘆符)