connectionLimit 在节点 mysql 中如何工作?

How does connectionLimit work in node mysql?

我完全不明白 mysql 模块中的 connectionLimit 是如何工作的。

我通过以下方式创建了一个连接池:

  var connPool = mysql.createPool({
        host: config.get('database.host'),
        user: config.get('database.user'),
        password: config.get('database.password'),
        database: config.get('database.dbname'),
        connectionLimit: 5
  });

现在,极限 5 在这里做什么?

这是我的想法:

假设有 5 个用户使用我的 REST API 从 table 中选择一些数据。现在在我的 API 中,我从 获得一个连接,做一些事情然后 释放 连接。

那么现在,假设有 12 个用户 同时向这个 API 发送请求。因此,他们中的第一个 5 应该可以访问数据,其他 7 将收到错误/无响应。他们将不得不再次请求以获取数据。

是这样还是别的什么?

Is this like so or something else?

这是另外一回事。

如果 connectionLimit 为 10,则驱动程序与数据库建立的最大连接数为 10。

假设默认驱动程序选项,如果所有这些连接都处于活动状态(也就是说,它们已从池中获取以执行查询,但尚未释放),那么下一个请求连接 (pool.getConnection()) 将排队:驱动程序将等待,直到其中一个活动连接被释放回池中。您的用户只会注意到一点延迟,但他们不会收到错误或没有响应;只是 延迟 响应。

所有这些都可以使用记录的选项 here 进行微调。例如,如果您更喜欢等待而不是等待,驱动程序 return 出现错误,请设置 waitForConnections : false.

或者,如果您希望驱动程序 return 出错,例如,有 25 个请求排队等待接收连接,请设置 queueLimit : 25