Node.js MySQL 模块中的 mysql.createConnection 和 mysql.createPool 有啥区别?

Posted

技术标签:

【中文标题】Node.js MySQL 模块中的 mysql.createConnection 和 mysql.createPool 有啥区别?【英文标题】:What is the difference between mysql.createConnection and mysql.createPool in Node.js MySQL module?Node.js MySQL 模块中的 mysql.createConnection 和 mysql.createPool 有什么区别? 【发布时间】:2014-12-13 11:01:56 【问题描述】:

我试图理解

mysql.createConnection

var mysql = require('mysql');

var connection = mysql.createConnection(
  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
);

mysql.createPool

var mysql = require('mysql');

var pool  = mysql.createPool(
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret' 
);

在 Node.js 的 mysql 模块中。

我已经熟悉 mysql.createConection。这似乎是与 MySQL 建立连接的默认方式。

mysql.createPool究竟做了什么?

我什么时候开始使用 mysql.createPool?

mysql.createConnection 相比,使用 mysql.createPool 有什么好处?

【问题讨论】:

【参考方案1】:

当你创建一个连接时,你只有一个连接,它会一直持续到你关闭它(或者它被mysql服务器关闭)。您可以通过引用传递它并重新使用它,或者您可以按需创建和关闭连接。

池是存储连接的地方。当您从池中请求连接时,您将收到当前未使用的连接或新连接。如果您已经达到连接限制,它将等到连接可用后再继续。这些池化连接不需要手动关闭,它们可以保持打开状态,并且可以轻松重复使用。

您使用哪一种完全取决于您,因为它们都实现了相同的目标,只是以两种不同的方式。

【讨论】:

以上是关于Node.js MySQL 模块中的 mysql.createConnection 和 mysql.createPool 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

找不到模块“mysql”node.js

使用池的node.js mysql中的错误处理和丢失连接

node.js如何读取MySQL数据

Node.js实现对MySQL数据库的增删改查

在 node.js 中的客户端和服务器 js 文件之间共享 mysql 连接

在项目中操作 MySQL丨 Node.js 数据库与身份认证