Node.js 使用连接池
示例
一种。同时运行多个查询
MySQL连接中的所有查询都一个接一个地完成。这意味着如果您要执行10个查询,而每个查询需要2秒钟,则完成整个执行过程将花费20秒钟。解决方案是创建10个连接,并在不同的连接中运行每个查询。这可以使用连接池自动完成
var pool = mysql.createPool({connectionLimit : 10,
host : 'example.org',
user : 'bobby',
password : 'pass',
database : 'schema'
});
for(var i=0;i<10;i++){
pool.query('SELECT ` as example', function(err, rows, fields) {
if (err) throw err;
console.log(rows[0].example); //显示1
});
}
它将并行运行所有10个查询。
使用时,pool您不再需要连接。您可以直接查询池。MySQL模块将搜索下一个空闲连接以执行查询。
b。在托管有不同数据库的数据库服务器上实现多租户。
如今,多租户已成为企业应用程序的常见要求,不建议在数据库服务器中为每个数据库创建连接池。因此,我们可以做的是与数据库服务器创建连接池,然后根据需要在托管在数据库服务器上的数据库之间切换它们。
假设对于数据库服务器上托管的每个公司,我们的应用程序都有不同的数据库。当用户点击应用程序时,我们将连接到相应的公司数据库。这是有关如何执行此操作的示例:-
var pool = mysql.createPool({connectionLimit : 10,
host : 'example.org',
user : 'bobby',
password : 'pass'
});
pool.getConnection(function(err, connection){
if(err){
return cb(err);
}
connection.changeUser({database : "firm1"});
connection.query("SELECT * from history", function(err, data){
connection.release();
cb(err, data);
});
});
让我分解一下例子:
在定义池配置时,我没有给出数据库名称,而只是给出了数据库服务器,即
{connectionLimit : 10,
host : 'example.org',
user : 'bobby',
password : 'pass'
}
因此,当我们要使用数据库服务器上的特定数据库时,我们要求连接使用以下命令来命中数据库:
connection.changeUser({database : "firm1"});
您可以在这里参考官方文档
以上是 Node.js 使用连接池 的全部内容, 来源链接: utcz.com/z/315779.html