nodejs:数据库连接成本是否重要?

时间:2016-11-25 09:21:06

标签: node.js database performance connection

1.synchronous

mongo.conn(function(err,db){
 db.collection('pet').find({},function(err, result){
    db.collection('petviewcount').updateOne({}, {$inc:{viewcount:+1}}, function(err, result){
        // db.collection('more').find({},function(err, result){
            // db.collection('insert').find({},function(err, result){
                // db.collection('update').find({},function(err, result){
                db.close();
                cb(err, result);
    });                    
});

});

2.asynchronous

mongo.conn(function(err,db){
    db.collection('pet').find({},function(err, result){
                db.close();
                cb(err, result);
    });
});
countUp();
// more + insert + update()

function countUp(){
  mongo.conn(function(err,db){
    db.collection('petviewcount').updateOne({}, {$inc:{viewcount:+1}}, function(err, result){
        db.close();
    });
  });
}


据我所知,向服务器(节点)发送单个请求时 第一个是节省服务器和数据库之间的连接成本。
第二个是比前一个更快的响应。

哪个在现实世界中更好?
(1.可接受的数据延迟很小   2.我不知道如何处理服务器和数据库之间的性能瓶颈。 )

1 个答案:

答案 0 :(得分:1)

为了提高性能,重新使用连接比在每个请求上创建新连接更好,因为建立连接需要资源和开销。

我认为他是一个更好的方法:

//global connection reference
var dbConnection;

//remember to wait for connection established before using the connection
mongo.conn(function(err,db){
  dbConnection = db;
  start();  //now you can run all query with one connection
});

function start() {
  findPet();
  countUp();
}

function findPet() {
  dbConnection.collection('pet').find({},function(err, result){
  });
}

function countUp(){
  dbConnection.collection('petviewcount').updateOne({}, {$inc:{viewcount:+1}}, function(err, result){
    });
}