- 文档首页
云数据库 MySQL 版
用户指南
连接管理
管理连接池模式
关于连接池模式
关于连接池模式
数据库连接池负责分配、管理和释放数据库连接,根据具体的业务场景选择相应的连接池模式,可以提升数据库的性能,提高数据库资源的利用率。云数据库 MySQL 版提供了直连连接池和事务级连接池。
连接池模式介绍
使用限制
事务级连接池使用限制
- 执行以下操作时,连接将被锁定直至连接结束(即该连接不会再被放到连接池里供其他用户连接使用)。
- 执行 PREPARE 语句或执行 COM_STMT_PREPARE 相关协议。
- 不支持 FOUND_ROWS、ROW_COUNT和LAST_INSERT_ID 函数的调用,这些函数可以调用成功,但是无法保证调用结果的正确性。
- 对于设置了 wait_timeout 的连接,wait_timeout 在客户端的表现可能不会生效,因为每次请求都会从连接池中获取连接,当 wait_timeout 超时后,只有连接池中的后端连接会断开,而后端连接断开并不会导致客户端连接断开。
- 除了 sql_mode、character_set_server、collation_server、time_zone 这四个变量以外,如果业务依赖其他 session 级别的系统变量,那么需要客户端在建连之后显式执行 set 语句,否则连接池可能会复用系统变量已经被更改过的连接。
- 由于连接可能会被复用,您可以使用 select connection_id() 查询当前连接的 thread id。
- 由于连接可能会被复用,所以 show processlist 显示的 IP 地址和端口可能和客户端实际的 IP 地址和端口不一致。
- 数据库代理会将所有节点上的 show processlist 结果合并后返回,在事务级连接池开启后,前端连接和后端连接的 thread id 无法对应。这导致 kill 命令可能会报错,但是实际上 kill 命令已经正常执行成功,可再通过 show processlist 确定相应的连接是否断开。
- 请勿为同一个数据库账号在不同 IP 下设置不同的权限,可能会导致连接复用时权限出错。例如为 user@192.168.1.1 设置了 database_01 的权限,而 user@192.168.1.2 没有 database_01 的权限,那么在开通连接池时可能会导致权限错误问题。
直连模式连接池使用限制
- 由于 Proxy 前后端连接不一致,您可以使用 select connection_id() 查询当前连接的 thread id 。
- 由于 Proxy 前后端连接不一致,所以 show processlist 显示的 IP 地址和端口可能和客户端实际的 IP 地址和端口不一致。
- 数据库代理会将所有节点上的 show processlist 结果合并后返回,由于当前 Proxy 前端连接和后端连接的 thread id 无法对应。这导致 kill 命令可能会报错,但是实际上kill命令已经正常执行成功,可再通过 show processlist 确定相应的连接是否断开。
连接池模式对比
结构对比
- 事务级连接池:同一客户端可以使用多个数据库代理的连接。
- 直连模式连接池:同一客户端只能使用一个后端连接。
功能对比
直连模式连接池和事务级别连接池大部分功能相同,因为直连模式连接池和用户连接绑定,所以涉及到连接立即更新的功能,这两种连接池模式会有些区别。
最近更新时间:2026.09.11 10:27:24