sequelize - 连接池大小

jwk*_*koo 7 node.js express sequelize.js connection-pool

现在我正在阅读一篇关于http://docs.sequelizejs.com/manual/installation/getting-started.html的文章

并且无法理解下面写的这句话。

如果您从多个进程连接到数据库,则必须为每个进程创建一个实例,但每个实例的 最大连接池大小应为“最大连接池大小除以实例数”。因此,如果您希望最大连接池大小为 90,并且您有 3 个工作进程,则每个进程的实例的最大连接池大小应为 30。

pool: {
  max: 5,
  min: 0,
  idle: 10000
}
Run Code Online (Sandbox Code Playgroud)

连接池大小是多少?这是最大的意思吗?

我现在正在理解这样的连接池。如果“max”为 5,并且有 3 个用户想要访问数据库,则会为单个用户分配 3 个连接。

而如果有6个用户要获取DB,5个连接都分配给单个用户,由于只有5个连接,第6个用户必须等待。

所以我无法理解

每个实例的最大连接池大小应为“最大连接池大小除以实例数”。

任何人都可以解释一下吗?

Abh*_*avD 7

这是一个非常广泛的问题,但这里是非常广泛的概述

每当我们连接到数据库服务器时,它实际上会派生一个新进程来满足该请求。如您所料,这很昂贵。因此池允许我们保持数据库服务器中活动的进程数量。max意味着无论您的应用程序(节点)收到多少请求,它都不会与数据库服务器打开新进程。

如果有6个用户想要获取数据库,则5个连接都分配给单个用户,并且由于只有5个连接,因此第6个用户必须等待。

在上述情况下,只有 5 个并行请求可以与 db 服务器(而不是应用程序服务器)一起运行

这是一个很好的阅读链接

  • 很难说什么是正确的数字。取决于读/写查询的比率(因为写锁定行)、您的硬件等。正如我共享的文档中提到的,除了“膝盖”之外如果增加池大小,数据库性能将会下降。另外,当您安装数据库时,数据库配置本身会告诉它它可以处理的最大值是多少。您必须更改它以及您的应用程序池大小才能使其正常工作。 (3认同)