mysql - 使用 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
。不确定这是否是有用的信息。
解决方案
推荐阅读
- mysql - Laravel 在 MySQL 点列上测试断言
- php - 无法使用其他自动加载的类文件中的作曲家自动加载类
- python - 试图在pygame中为视图设置动画,但只有当我移动鼠标时才会这样做
- c# - .net 核心的 ISO 8583 解析器
- apache-spark - Spark UDAF/Aggregator 按顺序处理记录组
- c# - 输入变量时可空检查无效
- excel - 导出具有动态名称范围的数组中的工作表
- json - 在 Json 数据中更新后未显示 ListView
- html - 使用 Bootstrap 隐藏实际单选按钮的显示
- python - 如何将熊猫数据框中的文本拆分为新的数据框列