【发布时间】:2023-02-22 12:18:56
【问题描述】:
所以我最近开始意识到 PgBouncer,我正在努力了解它如何替换多线程服务器上的连接池。我查看了HikariCP/Apache DBCP2 and PgBouncer,但它似乎没有解决这个问题。
假设我有一个处理每个线程请求的 Java 服务器,它通过 JDBC 连接到数据库。 JDBC 驱动程序应该是线程安全的,但同一连接上的请求一次只能处理一个。像 Hikari 这样的池允许每个线程获取现有连接(通过不必为每个请求建立新连接来节省时间),然后专门用于该线程内的数据库事务(在有其他同时请求时节省时间)。
pgbouncer 究竟是如何解决这两个问题的?如果我使用所有线程共享的到 pgbouncer 的单个全局连接,我们仍然会遇到阻塞问题。如果我为每个请求创建一个连接,我们仍然有与 pgbouncer 建立连接的开销(我知道这比连接到数据库便宜,但这看起来仍然很奇怪)。
【问题讨论】:
标签: java multithreading jdbc pgbouncer