云数据库 MySQL 连接池概述

这篇说说腾讯云数据库MySQL代理的会话级与事务级连接池功能,用于减少短连接场景下的建连开销与实例负载,并说明版本要求、注意事项及使用前提。 会话级连接池:适用于短连接,将闲置连接暂存池中复用,降低建连速率,但不减少并发连接数。 事务级连接池:复用满足User、DBName及DB完全一致的连接,事务提交后释放回池,有效降低总连接数。

相关产品
云数据库 MySQL 产品页,含版本规格、价格与购买入口。

这里说明云数据库 MySQL 数据库代理的连接池功能。

一、连接池类型

·会话级连接池:能有效解决短连接业务频繁建立新连接导致实例负载过高的问题。

·事务级连接池:主要用于减少直接连接到数据库的业务连接数,以及减少短连接场景下频繁建连带来的负载过高问题。

二、功能支持版本

连接池类型 数据库代理版本要求 TDSQL-C MySQL 版实例版本要求
会话级连接池 1.3.12及以上版本 数据库内核小版本为 MySQL 5.7 20211030及以上数据库内核小版本为 MySQL 8.0 20230630及以上
事务级连接池 1.4.1及以上版本 

三、注意事项

·目前连接池功能不支持同一账号对不同 IP 有不同权限,这可能会导致连接复用时权限出错。例如 mt@test123 设置了 database_a 的权限,而 mt@test456 没有 database_a 的权限,开通连接池可能会导致权限错误问题。

·连接池功能是指数据库代理的连接池功能,不影响客户端的连接池功能,如果你的客户端已经支持连接池,则可以不使用数据库代理的连接池功能。

·数据库代理连接池能力在较低 MySQL 内核小版本中存在 change user 时产生死锁的问题,该问题已在 MySQL 8.0 20230630 内核小版本中修复,若你的主实例内核小版本未达到 MySQL 8.0 20230630,则存在一定的风险,建议你关闭数据库代理连接池能力;若你要继续使用数据库代理连接池能力,建议升级主实例内核小版本至 MySQL 8.0 20230630 或以上版本,升级操作请参见 升级数据库内核小版本。

四、前提条件

已 开通数据库代理。

五、会话级连接池简介

会话级连接池适用于短连接场景。

会话级连接池主要用于减少短连接业务频繁建立新连接带来的实例负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统会将该连接放到代理的连接池中并保留一小段时间。(系统默认为5s,开启连接池功能后支持手动设置,参见 开启和关闭连接池功能)

当客户端重新发起新连接时,若连接池中有可用的连接,则可直接使用,从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。

注意:说明:

六、事务级连接池简介

开启事务级连接池后,客户端请求首先与云数据库 MySQL 的数据库代理建立连接。数据库代理不会立即创建后端数据库连接,而是优先从事务级连接池中匹配可用连接(新请求中和连接池中匹配可用连接的条件需满足 User、DBName 及 DB 三者完全一致)。若匹配失败,数据库代理才会新建数据库连接;若匹配成功,则直接复用该连接。事务提交后,连接将被释放回池中,供后续请求复用。该机制有效降低了数据库代理与数据库之间的总连接数。

连接锁定场景(连接不可复用场景):

·创建临时表。

·发送大报文请求。

·执行 LOCK TABLE 或 FTWRL 指令。

·执行 PREPARE 语句。

七、相关文档

关于设置连接池的操作指引,请参见 开启和关闭连接池功能。

赞 (0)
上一篇 4天前
下一篇 4天前