托管式连接池概览

本页介绍了什么是“托管连接池”,以及如何将其与 Cloud SQL 实例搭配使用。

借助托管式连接池,您可以使用池化技术优化 Cloud SQL for PostgreSQL 实例的资源利用率和连接延迟时间,从而扩缩工作负载。 托管式连接池会尽可能将服务器连接动态分配给传入请求。这可以吸收突然的连接高峰并重复使用现有的数据库连接,从而显著提升性能,尤其是对于规模化的连接。托管式连接池会连接到一个池化器集群,而不是连接到特定数据库,从而缩短连接时间并提高工作负载的可伸缩性。使用的池化器数量取决于实例的 vCPU 核心数量。

虽然您可以将托管式连接池用于任何事务工作负载,但对于包含短时连接的应用或会导致连接激增的应用,托管式连接池可提供最大的吞吐量和延迟时间优势。

对于长连接,使用托管式连接池的连接性能可能会略低于使用直接连接时的性能。在这种情况下,托管式连接池可在连接数非常高时提供连接缩放。不过,对于通常建立长期有效连接的应用,您可以改用与实例的直接连接。

如需详细了解如何启用托管式连接池,请参阅配置托管式连接池

要求

如需使用托管式连接池,您的实例必须满足以下要求:

  • 您的实例必须是 Cloud SQL 企业 Plus 版实例。
  • 您必须使用直接连接或仅使用 Cloud SQL Auth 代理连接到实例。
  • 您必须使用有效的用户名和密码连接到实例。使用托管式连接池时,不支持 IAM 和 IAM 群组用户。
  • 您的实例必须设置为使用专用服务访问通道、使用公共 IP,或者是启用了 Private Service Connect 的新实例。
  • 您的实例必须使用新的 Cloud SQL 网络架构
  • 托管式连接池的最低维护版本号为 POSTGRES_$version.R20250302.00_04。如需了解详情,请参阅自助维护

可用的配置选项

托管式连接池提供以下可使用 pool_mode 参数设置的池化选项:

  • transaction(默认):在事务级别池化连接。
  • session:在会话级别池化连接。

您还可以使用以下配置参数自定义托管连接池

  • max_pool_size:连接池的大小上限。默认值为 50 个连接。
  • min_pool_size:连接池的阈值大小。如果服务器连接数少于 min_pool_size,请向池中添加更多服务器连接。默认值为 0 个连接。
  • max_client_connections:实例允许的最大连接数。默认值为 5,000 个连接。
  • client_connection_idle_timeout:客户端连接在超时之前保持空闲的时间。此值的范围为 0 到 2,147,483 秒,默认值为 0 秒。
  • server_connection_idle_timeout:服务器连接在超时之前保持空闲的时间。此值的范围为 0 到 2,147,483 秒,默认值为 600 秒。
  • query_wait_timeout:查询等待超时的时间。此值的范围为 0 到 2,147,483 秒,默认值为 120 秒。
  • max_prepared_statements:事务池化模式下支持的协议级命名预处理语句命令的数量上限。默认值为 0。
  • ignore_startup_parameters:您希望忽略的参数,这些参数默认不会在托管式连接池的启动数据包中跟踪。
  • server_lifetime:服务器连接在被托管连接池关闭之前的闲置时长上限。默认值为 3600 秒。

限制

将托管式连接池与 Cloud SQL 企业 Plus 版实例搭配使用时,请注意以下限制:

  • 在现有实例上启用托管式连接池会导致数据库重启。
  • 当您使用 Cloud SQL API 启用、停用或配置托管式连接池时,instance.update API 不得包含任何其他实例配置更新。
  • 托管连接池只能与 Cloud SQL Auth 代理版本 2.15.2 及更高版本搭配使用。
  • 如果您使用的是 Cloud SQL Go 语言连接器,我们建议您使用 Go 版本至少为 1.24。如果您使用的是 Go 1.23 或更低版本,则在使用托管式连接池时可能会遇到性能限制。
  • 如果您在 transaction 池化模式下使用托管连接池,则不支持以下 SQL 功能:

    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW 临时表
    • LOAD
    • 会话级建议锁
  • 如果您使用的是 Cloud SQL for PostgreSQL 版本 17,则不支持 sslnegotiation=direct 选项。

后续步骤