1

我编写了一个节点程序,可以批量插入数据库,并为每个完成的插入记录一个控制台日志。

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();
}

我有两个这样的设置:

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完成1次插入时,我的本地机器已经完成了24次插入。我尝试将我的 RDS 升级到小型实例,它没有什么不同。

我的问题是为什么在这种情况下亚马逊的 rds 速度较慢。有什么解决办法吗?

4

1 回答 1

2

我认为问题可能与微实例性能有关。经过一些测试,我们完全摆脱了微型实例并切换到小型实例。另一方面,我没有发现任何关于 RDS 速度的问题,即使是小型实例。

看看 EC2 微实例是如何工作的以及应该在哪里使用它们: http: //docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html

从我对您的测试用例的理解来看,您的设置大多看起来像第二个图,这不适合微实例。尝试使用一个小实例并在那里比较结果。即使它仍然比您的本地机器慢,那么您将获得可比较的结果。

于 2013-01-15T08:59:36.457 回答