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)。最后,您希望在什么情况下同时应用客户端和外部连接池?
根据我的经验和理解,外部池的缺点是:
- 额外的故障点(包括从安全角度来看)
- 额外的延迟
- 部署的额外复杂性
- 具有用户凭据的安全问题
在研究这个问题时,我遇到过同时使用客户端和外部池的实例。这样部署的动机是什么?在我看来,这是为了获得我似乎缺少的收益而加剧了大多数劣势。
通常,出于您详述的原因,应用程序端的连接池是一件好事。外部连接池只有在
时才有意义
你的应用服务器没有连接池
你有几个(很多)个应用服务器的实例,导致你不能有效地限制应用服务器中的一个连接池的数据库连接数
给定一个针对预期负载合理配置 的 PostgreSQL 数据库,哪些因素会影响选择 external/middleware 连接池(即 pgBouncer、pgPool)与客户端-端连接池(HikariCP、c3p0)。最后,您希望在什么情况下同时应用客户端和外部连接池?
根据我的经验和理解,外部池的缺点是:
- 额外的故障点(包括从安全角度来看)
- 额外的延迟
- 部署的额外复杂性
- 具有用户凭据的安全问题
在研究这个问题时,我遇到过同时使用客户端和外部池的实例。这样部署的动机是什么?在我看来,这是为了获得我似乎缺少的收益而加剧了大多数劣势。
通常,出于您详述的原因,应用程序端的连接池是一件好事。外部连接池只有在
时才有意义你的应用服务器没有连接池
你有几个(很多)个应用服务器的实例,导致你不能有效地限制应用服务器中的一个连接池的数据库连接数