像PostgreSQL这样的数据库连接池到底是做什么的?

3
我知道连接池的基本概念是一组可重复使用的连接,可以加速访问数据库,因为它可以重复使用连接而不是不断创建新连接。
但这只是一个高层次的解释。它并没有解释什么是连接以及为什么连接池工作,因为即使在像client -> PgBouncer -> PostgreSQL这样的连接池中,客户端也不必创建与数据库的连接,但它仍然必须连接以创建与代理的连接。
那么连接是从哪里创建的(例如client -> PgBouncer),为什么创建这个连接比创建连接PgBouncer -> PostgreSQL更快?
1个回答

3

连接池有两个用途:

  • 它可以防止频繁打开和关闭数据库连接。

    与建立到pgBouncer的TCP连接相比,确实存在一定的开销,但这比建立数据库连接要 便宜得多。当您启动数据库连接时,会执行额外的工作:

    • 启动一个服务器进程,这比TCP连接昂贵得多。

    • PostgreSQL加载缓存的元数据表。

  • 它限制了客户端连接的数量,从而防止数据库超载。

    与限制max_connections的优点是,超过限制的连接不会收到错误,而是排队等待连接空闲。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接