nodejs:数据库连接成本重要吗?
nodejs: Does database connection cost matter?
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.不知道如何处理服务器和数据库之间的性能瓶颈。 )
就性能而言,重新使用连接比在每次请求时都创建一个新连接要好,因为建立连接需要资源和开销。
我认为他的方法更好:
//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){
});
}
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.不知道如何处理服务器和数据库之间的性能瓶颈。 )
就性能而言,重新使用连接比在每次请求时都创建一个新连接要好,因为建立连接需要资源和开销。
我认为他的方法更好:
//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){
});
}