全部产品
Search
文档中心

云数据库 RDS:设置事务级连接池

更新时间:Mar 30, 2026

RDS PostgreSQL数据库代理支持事务级连接池功能。您可以根据业务需求使用事务级连接池,帮助降低因大量连接导致的数据库负载压力。

功能简介

RDS PostgreSQL数据库代理提供事务级连接池功能。当应用存在大量短连接、连接创建频繁或连接数达到PostgreSQL数据库连接数上限时,开启事务级连接池可以显著降低数据库主进程的开销和总连接数。

应用场景

  • 业务侧多为短连接。

  • 连接创建频繁。

  • 连接数量很大(达到PostgreSQL数据库的连接数限制)。

工作原理

开启事务级连接池后,当客户端发起连接会话请求时,先与数据库代理建立前端连接,代理不会马上将其与后端数据库建立连接;当需要处理请求时,从事务级连接池里查找是否存在可用的后端连接:

说明

判断是否为可用后端连接的条件:userdbname等参数值是否一致。

  • 若存在,则直接使用,并在当前事务结束后将该连接放回事务级连接池。

  • 若不存在,代理会与数据库创建一个新的后端连接。

多个会话可共用一个后端连接。事务活跃的连接会占用后端连接,事务非活跃的连接不会占用后端连接,如下图所示:image

这样,通过让一个后端连接在一段时间内处理多个会话的事务请求,可以实现以下优势:

  • 减少连接频率:后端保持与数据库的持续连接,减少了频繁建立新连接的需求,从而降低数据库主进程的负载。

  • 降低总连接数:多个会话共享同一个后端连接,避免了闲置连接占用资源,减少了数据库的总连接数。

说明

数据库代理本身并没有最大连接数的限制,连接数的限制由后端数据库的规格决定。

使用限制

  • 当开启事务级连接池时,发送CANCEL请求可能导致会话挂起(Hang)。建议在使用CANCEL功能时关闭事务级连接池。

  • 当执行以下行为时,锁定连接,直至连接结束,即该连接不会再被放到连接池里供其他用户连接使用:

    • 执行PREPARE语句。

    • 大报文(例如16 MB以上)。

    • 使用COPY模式(Copy Mode)。

    • 使用刷新模式(Flush Mode)。

    • 临时表(Temporary Table)、序列(Sequence)、视图(View)。

    • 在事务中。

    • 声明游标(Cursor)。

  • 以下PostgreSQL特性与事务级连接池存在兼容性限制,使用时可能导致非预期行为。建议在启用这些功能时,关闭事务级连接池,以确保语义正确性:

    • 序列(Sequence)

    • 应用级锁(Advisory Lock)

    • 监听与通知(LISTEN/NOTIFY)

    • 可保持游标(Holdable Cursor)

  • 由于连接可能会被复用,使用select pg_backend_pid()查询当前连接的pid可能会变化。

  • 由于连接可能会被复用,pg_stat_activity或者SQL洞察中显示的IP地址和端口,可能会与客户端实际的IP地址和端口不一致。

设置连接池

前提条件

已开通数据库代理

注意事项

  • 本文介绍的连接池功能是指RDS PostgreSQL数据库代理的连接池功能,不影响客户端的连接池功能,如果您的客户端已经支持连接池,则可以不使用数据库代理的连接池功能。

  • 连接池不能解决由于存在大量慢SQL,导致的连接堆积问题,建议自行优化SQL,或者在PostgreSQL侧排查慢的原因。

操作步骤

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏,单击数据库代理

  3. 连接信息区域,您可以通过两种方法开启连接池:

    说明
    • 默认关闭连接池。

    • 修改连接池类型后,仅对新连接生效。

    • 方法一:将鼠标置于代理连接地址(终端)ID右侧的图标,在弹出的对话框中单击开启事务级连接池,然后在弹出的对话框中单击确定

    • 方法二:在目标代理连接地址操作列,单击修改配置,在弹出的对话框中,在连接池右侧选中事务级连接池后单击确定,即开启了事务级连接池。

      说明

      如果原来已经开启了连接池,重新选择连接池类型,可修改类型。

相关API

API

描述

DescribeDBProxy

查询数据库代理详情。

DescribeDBProxyEndpoint

查询数据库代理的连接地址信息。

ModifyDBProxyEndpoint

修改数据库代理的连接地址访问策略。

相关概念

  • 短连接:指仅在短时间保持的连接。例如,PHP应用程序在执行一个简单查询后关闭连接。优点是无需长期占用连接通道,缺点是每次发送业务都要重新建立连接,增加PostgreSQL数据库主进程的开销。

  • 长连接:指长时间保持的连接。例如,Web服务器或应用程序服务器打开许多到PostgreSQL服务器的连接,并保持它们打开,直到客户端停止。优点是与数据库建立连接的次数少,减少主进程开销。缺点是需要长期占用连接通道。

常见问题

Q:连接数达到多少,建议开启连接池?

A:连接数可能达到PostgreSQL上限时,建议开启事务级连接池。

Q:连接池的连接保持时间是多少?

A:10秒。

Q:使用连接池对实例性能有影响吗?

A:连接断开的原因很多,需要根据具体情况分析,不一定是因为应用和数据库代理都用了连接池的功能。