2

运行 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 表进行碎片整理?

4

3 回答 3

1

ALTER TABLE tbl_name 引擎=INNODB

是对 innodb 表进行碎片整理的唯一方法。

ALGORITHM=INPLACE 可以帮助我们在线进行。

于 2015-08-24T10:07:15.720 回答
1

从 MySQL 5.5.11 开始,您还可以使用ALTER TABLE tbl_name FORCE 来执行重建表的“null”更改操作。以前 FORCE 选项被识别但被忽略。

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

于 2016-01-26T02:35:49.590 回答
0

我遇到了同样的问题,对我有用的解决方案analyzealter

alter table xyz engine=InnoDB;
analyze table xyz;
于 2020-10-21T14:04:53.143 回答