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 была распознана, но проигнорирована.
У меня была такая же проблема, и решение, которое сработало для меня, делало
analyze
после
alter
:
alter table xyz engine=InnoDB;
analyze table xyz;