本文为您介绍 TDSQL-C MySQL 版数据库代理的连接池功能。
连接池类型
会话级连接池:能有效解决短连接业务频繁建立新连接导致实例负载过高的问题。
事务级连接池:主要用于减少直接连接到数据库的业务连接数,以及减少短连接场景下频繁建连带来的负载过高问题。
功能支持版本
|
会话级连接池 | 1.2.1及以上版本 | TDSQL-C MySQL 版 5.7 ≥ 2.0.20/2.1.6 TDSQL-C MySQL 版 8.0 ≥ 3.1.6 |
事务级连接池 | 1.4.4及以上版本 |
|
注意事项
目前连接池功能不支持同一账号对不同 IP 有不同权限,这可能会导致连接复用时权限出错。例如 mt@test123 设置了 database_a 的权限,而 mt@test456 没有 database_a 的权限,开通连接池可能会导致权限错误问题。
连接池功能是指数据库代理的连接池功能,不影响客户端的连接池功能,如果您的客户端已经支持连接池,则可以不使用数据库代理的连接池功能。
会话级连接池简介
会话级连接池适用于短连接场景。
会话级连接池主要用于减少短连接业务频繁建立新连接带来的实例负载。当某客户端连接断开时,系统会判断当前连接是否为闲置连接,如果是闲置连接,系统会将该连接放到代理的连接池中并保留一小段时间(系统默认为5秒,支持 设置连接保留阈值)。
当客户端重新发起新连接时,若连接池中有可用的连接,则可直接使用,从而减少与数据库的建连开销。如果连接池内没有可用的闲置连接,则走正常连接流程,与数据库重新建立新连接。 说明:
会话级连接池并不能减少数据库的并发连接数,而是通过降低应用与数据库建立连接的频率来减少 TDSQL-C MySQL 版主线程的开销,更好地处理业务请求。但连接池里的闲置连接会短暂占用您的连接数。
会话级连接池不能解决由于存在大量慢 SQL,导致的连接堆积问题,您需要先解决慢 SQL 问题。
事务级连接池简介
开启事务级连接池后,客户端请求首先与 TDSQL-C MySQL 版的数据库代理建立连接。数据库代理不会立即创建后端数据库连接,而是优先从事务级连接池中匹配可用连接(新请求中和连接池中匹配可用连接的条件需满足 User、DBName 及 DB 三者完全一致)。若匹配失败,数据库代理才会新建数据库连接;若匹配成功,则直接复用该连接。事务提交后,连接将被释放回池中,供后续请求复用。该机制有效降低了数据库代理与数据库之间的总连接数。
连接锁定场景(连接不可复用场景):
创建临时表。
发送大报文请求。
执行 LOCK TABLE 或 FTWRL 指令。
执行 PREPARE 语句。
相关文档