当您的业务同时涉及高并发的事务型处理(OLTP)和复杂的分析型处理(OLAP)两种场景时,您可以为RDS MySQL实例添加DuckDB分析只读实例。通过数据库代理实现HTAP自动行列分流,将OLAP查询请求路由至DuckDB分析只读实例,OLTP查询请求路由至主实例或普通只读实例,助力企业高效实现一体化事务处理与数据分析。
功能简介
HTAP自动行列分流功能示意图如下所示:

RDS MySQL的HTAP自动行列分流方案的核心在于充分利用不同存储引擎的优势。通过数据库代理根据SQL查询的预估执行代价,自动的将请求分发至最适合的实例类型,从而实现业务隔离与性能优化。
行存实例:RDS MySQL主实例和普通只读实例,采用InnoDB引擎,适合处理高并发的OLTP读、写请求。
列存实例:DuckDB分析只读实例,采用DuckDB引擎,适合复杂的OLAP分析查询。
目前支持两种行列分流方案:
HTAP行列自动分流:根据SQL的执行代价,自动将OLAP类型和OLTP类型的请求进行分流,分别导向列存实例或行存实例。
通过
HINT语法手动分流:使用行列自动分流没有达到预期效果,或者MySQL版本不支持代价估计,您可以使用HINT语法将SQL强制手动分流。
适用范围
使用HTAP行列自动分流时:
RDS MySQL实例的大版本为8.0,MySQL内核小版本为20250731及以上,且已创建DuckDB分析只读实例。
已开通数据库代理,且数据库代理版本为2.25.8及以上。
升级MySQL内核小版本和数据库代理版本请参见升级内核小版本和升级数据库代理内核小版本。
注意事项
开启HTAP行列自动分流时,目标数据库代理连接地址的读写属性需要设置为读写。
DuckDB分析只读实例的读权重只作用于DuckDB分析只读实例间的负载均衡,不影响行存实例与列存实例之间的分流逻辑。
当所有DuckDB分析只读实例处于满负载状态时,后续的分析型请求将会在DuckDB分析只读实例中排队等待处理。
将RDS MySQL代理连接地址的读权重设置为自定义后,该主实例下新增的DuckDB分析只读实例的读权重默认为0,需要手动配置。
您可以灵活配置数据库代理的延迟阈值、一致性级别、读写属性、读权重,详情参见配置数据库代理。
开启HTAP行列自动分流
登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。
在实例列表中单击目标主实例ID(带有
标识)。在左侧导航栏,单击数据库代理。
在连接信息区域,单击目标代理连接地址操作列的修改配置。
在弹出的对话框内,开启HTAP行列自动分流,然后单击确定。
分配DuckDB分析只读实例的读权重
当您的RDS MySQL实例配置有多个DuckDB分析只读实例时,您可以根据业务需求为每个实例设置相应的读权重。RDS MySQL代理连接地址的读权重默认为系统分配,实例的读权重越高,处理的读请求越多。
登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。
在实例列表中单击目标主实例ID(带有
标识)。在左侧导航栏,单击数据库代理。
在连接信息区域,单击目标代理连接地址操作列的修改配置。
在弹出的对话框内,将读权重分配设置为自定义。
设置为自定义后,该主实例下新增的DuckDB分析只读实例的读权重默认为0,需要手动配置。
在Duckdb分析只读实例读权重分配区域,根据业务需求设置每个DuckDB分析只读实例的读权重。
例如,假设主实例有3个DuckDB分析只读实例,读权重分别为0、100、200和200,则表示主实例不处理读请求(写请求仍然自动发往主实例),3个只读实例按照1:2:2的比例处理读请求。
说明读权重的取值范围为0~10000。
若DuckDB分析只读实例被删除,则该实例的权重会被自动移除,其他实例权重不变。
修改本参数实时生效,不会造成业务不可用。修改完成后,已存在的连接不会断开重连,新连接和存量老连接都会根据新权重进行分配。
通过HINT语法强制手动分流
当自动分流效果不理想,或因MySQL版本限制无法使用代价估算时,您可以通过在SQL语句中添加Hint来强制指定查询路由。Hint仅对当前SQL生效。
强制分流至列存实例(DuckDB分析只读实例)
/*force_ap_nodes*/ SELECT COUNT(*) FROM <目标表名>;强制分流至行存实例(主实例或只读实例)
SELECT /*+set_var(rds_cost_threshold_for_duckdb = 0)*/ COUNT(*) FROM <目标表名>;
相关文档与API
相关API
通过API(DescribeDBProxy)查询数据库代理详细信息。
通过API(DescribeDBProxyEndpoint)查询数据库代理的连接地址信息。
通过API(ModifyDBProxyEndpoint)配置数据库代理连接地址的访问策略。
附录:HTAP行列自动分流原理
数据代理接收查询请求后,首先将其转发至行存实例(主实例或只读实例)。
行存实例内的优化器对查询进行分析,评估执行代价是否超过设定阈值。
低于SQL语句预估执行代价阈值的请求将被引流至行存实例(主实例或只读实例)上执行。多个只读实例的情况下,根据负载均衡自动判定。
高于SQL语句的预估执行代价阈值的请求将被引流至列存实例(DuckDB分析只读实例)上执行。多个列存实例的情况下,根据负载均衡自动判定。