MySQL (Percona 5.7) 使用 InnoDB 引擎的 ALTER 表速度慢...?

标签 mysql performance innodb alter percona

我有一张 InnoDB 引擎中的表,非常简单,有 25000 行。当我执行一个简单的 ALTER 操作时,它会运行近 10 分钟:

mysql> ALTER TABLE `quote_followups_istvan` 
       ADD `customer_ip2` VARCHAR(20) NOT NULL DEFAULT '' AFTER `comment`;

查询正常,0 行受影响(10 分 52.82 秒) 记录:0 重复:0 警告:0

但是当我将其引擎更改为 MyISAM 时,我得到了:

mysql> alter table quote_followups_istvan engine="MyISAM";

查询正常,25053 行受影响(0.56 秒) 记录:25053 重复:0 警告:0

mysql> ALTER TABLE `quote_followups_istvan` 
       ADD `customer_ip3` VARCHAR(20) NOT NULL DEFAULT '' AFTER `comment`;

查询正常,25053 行受影响(0.37 秒) 记录:25053 重复:0 警告:0

所以 10 分钟 vs 0.37 秒......

我在这里缺少什么?

最佳答案

让我回答我自己的问题。继续阅读类似这样的文章

optimize mySql for faster alter table add column

还有更多,实际上说这是 InnoDb 表的“问题”,并提出了一些替代方法。

所以我只能得出结论,这是正常行为。

关于MySQL (Percona 5.7) 使用 InnoDB 引擎的 ALTER 表速度慢...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44922326/

相关文章:

mySQL:从 "yyyy-mm-ddThh-mm-ss.sssZ"转换为 "yyyy-mm-dd hh-mm-ss"

MySQL 从 TIMESTAMP 选择恰好 7 天前的行

Mysql没有使用任何索引

mysql - 列出由 Innodb 全文索引的单词

mysql - SQL Join 因 CodeIgniter 失败

mysql从循环中的选择查询返回结果集

MySQL 查询效率不高(PHP 搜索)

java - 什么时候 select 比 for 快?

objective-c - 在性能方面重构常见的 HTTP 请求代码是否值得?

mysql - 我应该在 INNER JOIN 的每个部分之后使用 WHERE 子句,还是最好将它们堆叠在最后?