Mysql 5.5 Дефрагментация не снижает процент фрагментации

Мы запускаем OPTIMIZE TABLE, но не видим снижения фрагментации. Они достигают 120% до 200%.

Я рассчитываю% фрагментации, используя это: Data_Free / (Data_Length + Index_Length)

В моих таблицах используется механизм INNODB, а для "innodb_file_per_table" установлено значение 1.

Что мне не хватает?

Что-то изменилось с Mysql 5.5+?

ТИА

2 ответа

"OPTIMIZE TABLE" предназначен только для таблиц MyISAM - InnoDB не страдает от "фрагментации", как таблицы MyISAM. Поэтому вам не нужно их оптимизировать.

Кроме того, ваш метод расчета неверен. Поскольку есть больше, чем просто данные + длина индекса.

ALTER TABLE table_name ENGINE=InnoDB; может использоваться в таблицах InnoDB для перестроения таблицы, очистки ее индексов и, в случае использования innodb_file_per_table=1, изменения размера файла таблицы.

Кроме того, innodb позаботится о себе, и любые замедления, которые вы можете испытать после выполнения этой команды, связаны с тем, что вы перестроили таблицу, проиндексированную по первичному ключу, и если вторичные ключи чаще используются при поиске в БД, вы их фрагментировали вместо.

InnoDB имеет тенденцию понимать разреженное хранение данных в файлах и, вероятно, его нужно "исправлять" гораздо реже, чем это делают некоторые люди.

Другие вопросы по тегам