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

回到顶部