在RDS实例上缓慢的Mysql存储过程

时间:2015-01-26 13:08:53

标签: mysql stored-procedures amazon-web-services amazon-ec2 amazon-rds

我在Amazon RDS实例上运行缓慢的Mysql存储过程时遇到问题。

我目前正在使用存储过程将客户端的Mysql数据库迁移到我们自己的Mysql数据库。两个数据库都在同一个RDS实例上。实例类是'db.m1.medium'。

一个存储过程将大约2.600.000条记录从客户端数据库中的一个表复制到我们数据库中的2个表。

在笔记本电脑上的数据库本地副本上运行此存储过程时,需要1小时15分钟。在RDS实例上运行此存储过程时,大约需要19个小时。我正在从同一可用区中的EC2实例调用存储过程。

我可以在RDS实例上更快地运行存储过程吗?

编辑27-01-2015: 昨晚由于内存不足异常,存储过程崩溃了。

我现在改变了存储过程。我将原始表中每一行的所有插入包装在一个事务中。我还为存储过程中的一些选择查询做了一些工作,所以我不再需要它了。

我还为RDS实例提供了30 GB的SSD驱动器。

现在存储过程在我的笔记本电脑上运行12分钟。但我估计亚马逊RDS上仍需要8个小时。这个巨大的差异怎么可能?

编辑28-01-2015: 该过程仍在运行。预计时间现已增加到31小时15分钟。

当我监视我的RDS实例时,可用内存量持续下降。存储过程中是否可能存在内存泄漏?

1 个答案:

答案 0 :(得分:0)

在过去几年中制作的普通笔记本电脑将比m1.medium实例强大得多。它为您提供1 vCPU和1.7 GB的RAM,在m1线上为"等效的CPU容量为1.0-1.2 GHz 2007 Opteron或2007 Xeon处理器"。

考虑迁移到m3实例 - 它们拥有更多现代处理器 - 并且具有更多RAM的更大实例样式。