Назад | Перейти на главную страницу

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

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

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

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

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

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

TIA

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

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

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

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

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