RDS的数据库独享代理提供事务拆分功能,能够将事务内写操作之前的读请求转发到只读实例,降低主实例负载。

背景信息

默认情况下,RDS数据库独享代理会将事务内的所有请求都发送到主实例以保障事务的正确性,但是某些框架会将所有请求封装到非自动提交的事务中(通过set autocommit=0;关闭自动提交),导致主实例负载过大。此时您可以使用事务拆分功能。

事务拆分功能默认开启,在默认的Read Commited隔离级别下,当RDS关闭事务自动提交后,仅会在发生写操作时才正式开启事务,正式开启事务前的读请求会通过负载均衡模块分流至只读实例。

说明
  • 显式事务(例如begin或者start transcation)暂时不支持拆分。
  • 某些业务对全局一致性有要求,开启事务拆分后将不满足全局一致性,因此在开启事务拆分前请评估事务拆分功能是否适用于您的业务。
事务拆分

开启或关闭事务拆分

您可以根据需求随时关闭或开启事务拆分功能。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏单击数据库代理
  3. 选择代理终端(原读写分离)页签,在事务拆分右侧单击关闭开通
    说明 开通或关闭事务拆分后仅对新连接生效。

相关API

API 描述
DescribeDBProxy 查询RDS实例的数据库独享代理详情。
DescribeDBProxyEndpoint 查询RDS实例独享代理的连接地址信息。
ModifyDBProxyEndpoint 修改RDS实例数据库独享代理的连接地址信息。