MySQL дефрагментирует таблицы InnoDB

После запуска mysqltuner я получил такой вывод:

Total fragmented tables: 284

Для дефрагментации я попробовал это:

1. ALTER TABLE tbl_name ENGINE=INNODB
2. Another way to perform a defragmentation operation is to use mysqldump to dump the table to a text file, drop the table, and reload it from the dump file.

Оба метода описаны в документации MySQL.

Но ни один из методов не помог. Mysqltuner по-прежнему говорит, что таблицы фрагментированы.

Замечания: innodb_file_per_table выключен в моих конфигурациях.

Как я могу дефрагментировать мои таблицы InnoDB?

2 ответа

ALTER TABLE tbl_name ENGINE=INNODB

Это единственный способ дефрагментировать таблицу innodb.

ALGORITHM = INPLACE может помочь нам сделать это онлайн.

Начиная с MySQL 5.5.11, вы также можете использовать ALTER TABLE tbl_name FORCE для выполнения "нулевой" операции изменения, которая перестраивает таблицу. Ранее опция FORCE была распознана, но проигнорирована.

https://dev.mysql.com/doc/refman/5.5/en/alter-table.html

У меня была такая же проблема, и решение, которое сработало для меня, делало analyze после alter:

alter table xyz engine=InnoDB;
analyze table xyz;
Другие вопросы по тегам