2016-11-25 48 views
0

1.synchronousnodejs:数据库连接成本是否重要?

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.我不知道该如何处理服务器和数据库性能瓶颈之间。)

+0

你误会同步和异步过程的概念。你的两个示例代码都是异步运行的。出于性能考虑,重新使用连接比每次请求创建新连接要好,因为连接需要资源和开销。 – iKoala

+0

如果在上面的例子中没有回调,它是同步的吗?或者在使用睡眠函数或节点同步库时是同步的吗?我感到困惑。 – user2655470

回答

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){ 
    }); 
} 
+0

谢谢你的体贴:) – user2655470