PostgreSQL 的客户端连接池与外部连接池的优缺点是什么?

What are the pros and cons of client-side connect pools vs external connection pools for PostgreSQL?

给定一个针对预期负载合理配置 的 PostgreSQL 数据库,哪些因素会影响选择 external/middleware 连接池(即 pgBouncer、pgPool)与客户端-端连接池(HikariCP、c3p0)。最后,您希望在什么情况下同时应用客户端和外部连接池?

根据我的经验和理解,外部池的缺点是:

在研究这个问题时,我遇到过同时使用客户端和外部池的实例。这样部署的动机是什么?在我看来,这是为了获得我似乎缺少的收益而加剧了大多数劣势。

通常,出于您详述的原因,应用程序端的连接池是一件好事。外部连接池只有在

时才有意义
  • 你的应用服务器没有连接池

  • 你有几个(很多)个应用服务器的实例,导致你不能有效地限制应用服务器中的一个连接池的数据库连接数