对于在Amazon实例上运行缓慢的Mysql存储过程,我有一个问题。
我目前正在使用存储过程将客户端的Mysql数据库迁移到我们自己的Mysql数据库。两个数据库都位于同一个RDS实例上。实例类为“db.m1.media”。
一个存储过程将客户端数据库中的一个表中大约2.600.000条记录复制到我们数据库中的两个表中。
当在笔记本电脑上的本地数据库副本上运行此存储过程时,需要1小时15分钟。在RDS实例上运行此存储过程时,大约需要19小时。我从同一可用性区域的EC2实例中调用存储过程。
我能让存储过程在RDS实例上运行得更快吗?
编辑27-01-2015:昨晚存储过程由于内存不足的异常而崩溃。
我现在更改了存储过程。对于原始表中的每一行,我将所有插入都封装在一个事务中。我还为一些在存储过程中做的选择查询做了一些工作,这样我就不用再做了。
我还为RDS实例提供了一个30 GB的SSD驱动器。
现在存储过程在12分钟内在我的笔记本上运行。但我估计亚马逊的RDS还需要8个小时。怎么会有这么大的差别呢?
编辑28-01-2015:程序仍在运行.估计时间现在增加到31小时15分钟。
当我监视我的RDS实例时,可释放内存的数量一直在下降。存储过程中是否可能存在内存泄漏?
发布于 2015-01-26 13:17:12
在过去几年里,您的普通笔记本电脑将比m1.medium实例强大得多。它为您提供了1 vCPU和1.7GB内存,在m1行上是“相当于1.2-1.2 GHz 2007 Opteron或2007 Xeon处理器的CPU容量”。
考虑迁移到一个m3实例--它们拥有更现代的处理器--并使用更多的RAM来使用更大的实例样式。
发布于 2021-08-18 19:29:06
如何在RDS MySQL DB中编写存储过程?
下面是一个例子:
USE `your_db_name`;
DROP procedure IF EXISTS `procedure_method_name_here`;
DELIMITER $$
USE `your_db_name`$$
CREATE PROCEDURE `procedure_method_name_here` ()
BEGIN
// sql statement
SELECT *
FROM db_name.table_name
WHERE id = match_ids;
END$$
DELIMITER ;运行以上命令。您的程序将为您创建。
https://stackoverflow.com/questions/28150695
复制相似问题