本文为您介绍云数据库 PostgreSQL 的数据库代理功能。
功能概述
数据库代理是位于云数据库服务和应用服务之间的网络代理服务,用于代理应用服务访问数据库时的所有请求。您可以连接数据库代理访问地址,使用数据库代理的各项功能,以简化云数据库 PostgreSQL 实例的连接管理。
如果主实例因连接数过多导致负载高,或需要读写分离,您可以使用数据库代理功能。数据库代理访问地址独立于原有的数据库访问地址,通过数据库代理地址的请求,将全部通过代理集群中转访问数据库的主从节点,进行读写分离,将读请求转发至只读实例以降低主库的负载,具有高可用、高性能、可运维等特点。
计费说明
云数据库 PostgreSQL 数据库代理采用按量计费,计费项为 CU,数据库代理定价有地域区分,具体如下表所示。
说明:
CU 指的是数据库代理的最小计费规格(即一个2核4000MB内存代理规格的价格),当前数据库代理节点包含三种规格:2核4000MB、4核8000MB、8核16000MB,对应 CU 分别为1CU、2CU、4CU。
地域 | 价格(元/CU/小时) |
广州、南京、上海、北京、成都、重庆、天津、深圳 | 0.46 |
中国香港 | 0.77 |
利雅得 | 0.92 |
东京、首尔、圣保罗、新加坡、曼谷、弗吉尼亚、硅谷、雅加达、法兰克福 | 0.79 |
深圳金融、北京金融、上海金融 | 0.78 |
适用场景
大量短连接为主的业务,性能不足。
业务使用多个只读实例,在应用程序侧手动读写分离,维护成本和风险较高。
连接数过多导致实例负载过高。
事务内有大量请求,导致主实例负载过高的场景。
不同业务需要通过访问地址进行负载分配。
跨可用区需要就近访问,降低访问延迟。
数据库代理特性
高稳定性:采用集群架构部署,多节点保证故障平滑转移。
强隔离性:数据库代理使用独立资源为当前实例提供代理服务(各代理资源独立,不共享资源)。
超高性能:每个代理每秒最高可以处理10万左右的请求。
扩容方便快捷:支持多个代理节点动态扩展,当前最多支持4个代理节点。
热加载:主实例发生切换、变配、只读实例增减等情况,数据库代理可动态热加载配置,避免出现网络中断或重启。
支持连接池:有效解决连接数过多或短连接业务频繁建立新连接导致实例负载过高的问题。
注意事项
当前仅支持创建1个数据库代理访问地址。
使用代理连接地址时,show processlist 会将所有节点的结果合并后返回。
对于 prepare 语句,数据库代理会先将 prepare 发送到所有节点,当后续的 execute 请求到来时,根据 prepare 的语句类型来决定 execute 的路由。如 prepare 了一个写语句,execute 时会发到主库,而如果 prepare 的是事务外的读语句,则会发送到只读实例。
数据库代理本身并没有最大连接数的限制,连接数的限制主要由后端数据库实例的最大连接数决定(主实例和只读实例最大连接数的最小值会影响业务性能)。
单个数据库代理节点能够建立的连接数上限为20000,如果超过此上限可能引起数据库代理连接不稳定。数据库代理支持事务级连接池功能,可帮助减少大量空闲连接造成的后端连接数打满问题,了解事务级连接池功能,请参见 连接池概述。
数据库代理功能界面

数据库代理文档概览
目录 | 说明 | 文档指引 | |
数据库代理概述 | | 介绍数据库代理功能简介、计费等 | 本文档 |
数据库代理内核特性 | 内核小版本更新说明 | 介绍数据库代理已发布的版本更新动态 | |
管理数据库代理 | 开通数据库代理 | 介绍如何通过控制台为实例开通数据库代理 | |
| 查看访问策略 | 介绍如何通过控制台查看数据库代理连接地址的访问策略 | |
| 调整数据库代理配置 | 介绍如何调整数据库代理的代理规格、可用区以及节点个数 | |
| 重新负载均衡 | 介绍如何通过重新均衡负载打散连接 | |
| 关闭数据库代理 | 介绍如何通过控制台关闭数据库代理 | |
连接池功能 | 连接池概述 | 介绍数据库代理的连接池功能和说明 | |
| 开启和关闭连接池功能 | 介绍开启和关闭连接池功能的相关说明和操作 | |