MySQL 对 InnoDB 表进行碎片整理

标签 mysql query-optimization innodb mysqltuner

运行 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 documentation 中都有描述。 .

但是这些方法都没有帮助。 Mysqltuner 仍然说表是碎片化的。

注意 innodb_file_per_table 在我的配置中是关闭的。

如何对 InnoDB 表进行碎片整理?

最佳答案

ALTER TABLE tbl_name ENGINE=INNODB

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

ALGORITHM=INPLACE 可以帮助我们在线完成。

关于MySQL 对 InnoDB 表进行碎片整理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514073/

相关文章:

php - 显示数据库中已有查询的最新搜索

MySQL 索引 - 最佳实践是什么?

mysql - 在 mysql 中创建一段时间内的滚动总和

MySQL:更新大表的最佳方式

mysql - 我如何知道一个 mysql 表使用的是 myISAM 还是 InnoDB 引擎?

mysql - "FOR UPDATE"v/s "LOCK IN SHARE MODE": Allow concurrent threads to read updated "state" value of locked row

php - INNODB和mysql PDO驱动程序以共享模式锁定

mysql - 如何使用hibernate检查表中是否存在数据

php - 当尝试将空字符串存储为非空列的值时繁荣库抛出异常

php - 真正导致 PHP MySQL 库版本与您的 MySQL 服务器版本不同的原因是什么?