全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

设置连接池

最近更新时间:2026-01-13 13:16:15

连接池

数据库代理内置连接池机制,支持后端数据库连接的复用,减少代理直连数据库的连接数量。在短连接较多或连接创建频繁的场景下,可有效避免频繁建连带来的资源消耗,显著降低数据库侧负载。

连接池类型

在数据库代理架构中,连接被拆分为两个层次:

  • 前端连接:客户端与数据库代理之间建立的会话连接

  • 后端连接:数据库代理与后端 MySQL 实例之间的物理连接

客户端建立会话时,代理仅创建前端连接,不会立即分配后端连接;只有在执行 SQL 或事务时,才会从连接池中获取后端连接。

根据后端连接的获取与释放粒度不同,RDS MySQL 数据库代理支持两种连接池模式:事务级连接池会话级连接池。您可根据业务访问模式和资源使用情况,选择是否启用连接池及其类型。

连接池类型

使用场景

事务级连接池(默认)

适用于短连接、连接创建频繁且数量达到MySQL数据库连接数限制的场景。

前提:业务不涉及事务级连接池的使用限制。

会话级连接池

适用于长连接、连接数量少、连接上请求密集的场景。

事务级连接池

事务级连接池以请求 / 事务粒度获取和释放后端数据库连接,实现高效的连接复用与资源控制。

1)适用场景

  • 业务以短连接为主

  • 客户端频繁建立和释放连接

  • 总连接数较大,接近或达到 MySQL 实例连接数上限

2)核心作用

  • 降低连接建立开销:减少应用与数据库之间频繁建连带来的认证、握手等成本,降低 MySQL 主线程压力

  • 减少数据库连接数:在客户端请求不密集的情况下,显著降低数据库实例上的总连接数量

3)工作原理

从事务级连接池获取连接的具体流程如下:

每次开始新的请求/事务时:

  • 若存在可复用后端连接,代理直接从连接池中获取后端连接执行当前请求或事务;事务结束后,连接归还至连接池,供后续会话复用。

  • 若不存在可复用后端连接,代理动态创建新的后端连接处理请求,并在事务完成后将其纳入连接池统一管理。

通过该机制,多个前端会话可共享有限数量的后端连接,从而显著提升资源利用率。

主要优势:

  • 降低连接创建成本:后端连接保持长生命周期,避免频繁的 TCP 握手和认证过程,减少数据库 CPU 与网络开销

  • 优化资源使用效率:通过连接复用,显著减少数据库实例上的总连接数,避免大量空闲连接占用内存和线程资源

4)使用限制

开启事务级连接池后,在以下场景中,后端连接将被独占使用,直至连接释放。在此期间不会归还至连接池,其行为等同于会话级连接池,以保证语义正确性和事务一致性:

  • 执行 PREPARE 语句或相关命令

  • 创建临时表

  • 创建或使用用户变量

  • 执行 LOCK TABLE、LOCK TABLES、FLUSH TABLES WITH READ LOCK 且未执行 UNLOCK TABLES

  • 调用 GET_LOCK() 函数(该连接在整个会话期间不再复用)

  • 执行包含 SQL_CALC_FOUND_ROWS 的语句

此外,还需注意以下限制与行为差异:

  • 函数兼容性限制FOUND_ROWS()、ROW_COUNT()、LAST_INSERT_ID() 等函数可正常调用,但在连接复用场景下,无法保证返回结果的准确性。

  • wait_timeout 行为差异当后端连接因 wait_timeout 超时被关闭时,仅影响连接池中的后端连接,不会直接断开客户端与代理之间的前端连接。

  • 连接标识说明由于后端连接可被复用,SELECT CONNECTION_ID() 返回的是当前后端连接对应的线程 ID。

  • processlist 显示差异受连接复用机制影响,SHOW PROCESSLIST 中展示的 IP 和端口信息,可能与客户端实际地址不一致。

会话级连接池

会话级连接池以会话粒度获取和释放后端数据库连接。相较于事务级连接池,其连接分配粒度更粗,连接复用能力相对较低。

1)适用场景

  • 业务以长连接为主

  • 连接数量相对较少,且单连接上的请求较为密集

2)核心作用

  • 降低连接建立开销:减少应用与数据库之间频繁建连带来的认证、握手等成本,降低 MySQL 主线程负载

3)工作原理

会话级连接池的整体机制与事务级连接池类似,不同之处在于后端连接的占用周期

当客户端建立会话并发起首个请求时:

  • 存在可复用后端连接,代理从连接池中获取一个后端连接,并绑定至该会话,用于后续所有请求。

  • 不存在可复用后端连接,代理动态创建新的后端连接处理请求,并将其绑定到当前会话。

整个会话生命周期内,该会话始终独占一个后端连接;会话结束、前端连接断开后,后端连接才会被归还至连接池,供后续会话复用。

说明:在会话未结束前,即使该会话处于空闲状态、不存在正在执行的事务,其占用的后端连接也无法被其他会话复用。因此,会话级连接池无法显著降低数据库实例的总连接数

4)使用限制

事务级连接池 vs 会话级连接池对比

对比项

事务级连接池

会话级连接池

连接获取粒度

事务 / 请求级

会话级

后端连接占用周期

仅在事务或 SQL 执行期间占用

会话整个生命周期独占

连接复用能力

较低

数据库总连接数

可显著降低

基本无法降低

空闲会话资源占用

空闲时不占用后端连接

空闲会话仍占用后端连接

适用连接模式

短连接

长连接

适用请求特征

请求不密集、突发性强

单连接请求密集

对数据库主线程压力

显著降低

降低有限

功能限制

存在部分语义与函数限制

无额外限制

行为复杂度

较高

简单直观

配置连接池

前提条件

已开通数据库代理

注意事项

  • 本文所述连接池功能仅指 RDS MySQL 数据库代理提供的连接池能力,不会影响客户端自身的连接池机制。

  • 连接池主要用于降低连接建立与空闲连接带来的资源开销,无法解决因大量慢 SQL 导致的连接堆积问题。对于此类场景,建议从 SQL 优化或 MySQL 实例侧入手,排查并消除慢查询根因。

操作步骤

  1. 登录云数据库MySQL控制台,在实例列表页单击目标实例ID,进入实例管理页面。

  2. 单击左侧导航栏数据库代理,进入数据库代理页面。

  3. 在代理详情页的右上角,单击配置代理策略

  4. 在弹出的对话框中,根据业务需要修改连接池配置,点击确定,完成连接池的设置。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈