首页 > 解决方案 > 使用 innoDB 在 MySQL 中使用相同数据的本地和生产之间的极端执行时间差异

问题描述

我正在尝试执行ALTER TABLE将表转换为 UTF-8。我从生产中的一个非常大的表中导出了所有数据,并将其导入到我的本地 mySQL 实例中,以测试需要多少时间来准备自己。

该表包含 3300 万行,但仅包含 3 列。

这是转换的查询:

ALTER TABLE image_public_key CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci, FORCE;

当我在具有 SSD 的小型笔记本电脑上运行的本地实例中运行该查询时,大约需要 5 分钟。没什么大不了。

当我在生产环境中使用带有实例的 Amazon RDS 运行相同的查询时,db.r3.xlarge需要 55 分钟(这是时间的 11 倍!)。

我试图了解小型笔记本电脑如何击败这样的机器(4cpu + 30 gb RAM + 800 Gb 内存,目前 300 Gb 可用)。

会不会是亚马逊方面的一些限制?一些默认变量?任何帮助,将不胜感激。我需要在多个表上运行相同的查询,并且不能将生产搁置这么长时间......

编辑

我可能会补充一点,任务会在状态下停留很长时间copy to tmp。不确定这是否是有用的信息。

标签: mysqlperformanceinnodbdatabase-performancealter-table

解决方案


推荐阅读