Чомусь всі таблиці InnoDB на моєму сервері MySQL перераховані як фрагментовані, коли я запускаю mysqltuner. Я встановив сервер лише кілька годин тому (на OSX Lion), і в ньому є купа свіжих даних, імпортованих із пакетних файлів.
Я спробував перетворити всі таблиці в одній базі даних на 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 робить не так? Якщо це проблема, як її виправити?
EDIT
Мені стає все більш підозріло, що я ідіот і що фрагментація 7 МБ є для всього файлу, а не для кожної таблиці. Чи може хто-небудь підтвердити, чи це було б так?
[!!] Total fragmented tables: 2314
що, я впевнений, вказує на проблему (з подвійними червоними знаками оклику)