文档首页/ 云数据库 TaurusDB/ 用户指南/ HTAP实时分析(标准版)/ 使用行列分流实现OLAP的复杂查询
更新时间:2025-08-21 GMT+08:00
分享

使用行列分流实现OLAP的复杂查询

操作场景

OLTP类业务一般包含读和写的请求,写请求统一由主节点处理,读请求由只读节点或主节点处理。OLAP类业务一般仅包含读请求,读请求统一由HTAP节点处理。

如果您的业务中既包含OLTP类业务又包含OLAP类业务,为了实现业务的最大性能,您可以基于列存索引特性,通过数据库代理地址实现OLAP查询引流到HTAP节点、OLTP查询引流到只读节点。

  • 只读节点:该类型的只读节点基于行存储处理读请求。行存节点在处理OLTP读请求时具有更高的性能。
  • HTAP节点:该类型的只读节点基于列存储处理读请求。HTAP在处理OLAP读请求(如复杂的SQL和分析型SQL)时,具有远超只读节点的性能。

行列分流介绍

行列分流支持自动分流和手动分流两种方式。

表1 行列分流

行列分流方式

描述

约束与限制

自动分流

自动分流功能开启后,数据库代理基于业务流入的SQL语句的实际执行代价来实现自动分流,从而实现SQL查询的最大性能。

自动分流判断标准:

  • 低于或等于SQL语句的执行代价阈值的请求将被引流至只读节点上(或者主节点)执行。多个只读节点的情况下,具体引流至哪个只读节点,根据权重自动判定。
  • 高于SQL语句的执行代价阈值的请求将被引流至HTAP节点上执行。多个HTAP节点的情况下,具体引流至哪个HTAP节点,根据权重自动判定。
  • 目前仅HTAP标准版单机实例支持配置行/列分流功能。
  • 行/列自动分流仅支持权重路由模式,其余模式暂不支持。
  • 行/列自动分流仅支持读写模式代理,只读模式代理不支持。
  • 行/列自动分流仅支持最终一致性,不支持全局一致性、会话一致性。
  • 行/列自动分流不支持会话连接池。
  • 不支持SELECT FOR UPDATE。
  • 不支持自定义变量。
  • 不支持PREPARE协议。

手动分流

如果使用行存和列存自动分流没有达到预期效果,您可以使用HINT语法强制执行行存或列存执行计划。

-

使用须知

不支持数据库名称为中文的库同步,目标库、任务名不支持中文,且目标库最少三个字符。

前提条件

  • TaurusDB实例需要按照如下表格进行参数设置。
    表2 参数说明

    参数名称

    参数值

    修改方式

    说明

    binlog_expire_logs_seconds

    86400

    修改实例参数

    Binlog的保留时间建议大于1天:60(秒)*60(分钟)*24(小时)=86400,防止由于binlog时间设置过短,导致增量复制失败。

    rds_global_sql_log_bin

    ON

    TaurusDB服务如何开启binlog?

    TaurusDB内核版本大于或等于2.0.45.230900时,使用该参数。

    内核版本的查询方法请参见如何查看云数据库 TaurusDB实例的版本号

  • TaurusDB实例已创建数据库和表。

操作步骤

相关文档