我编写了一个节点程序,批量插入数据库并为每个完成的插入执行控制台日志。
function insert(){
var sql = "insert into todo (user, content) values (xx, xx);" +
"insert into todo (user, content) values (xx, xx);" +
"insert into todo (user, content) values (xx, xx);" +
(.... 4000 lines of insert)
db.insert(sql,function success(){
console.log('done');
});
}
for(i=0;i<10000;i++){
insert();
}
我有2个设置:
1) Local machine to local DB.
2) Amazon EC2 Micro Instance to Amazon RDS Micro Instance from same region
*Both my.cnf leave to default with only max_allowed_packet=500m set.
结果是在RDS完成一次插入时,我的本地机器完成了24次插入。我试图将我的RDS升级到小实例,它没有什么不同。
我的问题是为什么亚马逊在这种情况下会变慢。对此有何解决方案?
答案 0 :(得分:2)
我认为问题可能与微实例性能有关。经过一些测试,我们完全远离微实例并切换到小实例。另一方面,即使是小型实例,我也没有发现任何有关RDS速度的问题。
了解EC2微实例如何工作以及应该在何处使用它们: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html
从我对你的测试用例的理解,你的设置大多看起来像第二个数字,这应该不适合微实例。尝试使用一个小实例并在那里比较结果。即使它仍然比本地机器慢,你也会得到可比较的结果。