当前位置: 首页 > 工具软件 > Rollup > 使用案例 >

Rollup与查询

孔建柏
2023-12-01

Rollup与查询

Rollup在查询中的作用:

  • 索引
  • 聚合数据(仅作用于聚合模型、即aggregate key)

但是为了命中Rollup需要满足一定的条件,并且可以通过执行计算中的ScanNode节点的PreAggregation的值来判断是否可以命中Rollup,以及Rollup字段判断命中的是哪一张Rollup表.

名次解释

Base:基表.
Rollup:一般指基于Base表创建的Rollup表,但在一些场景包括Base以及Rollup表.

索引

Doris会把Base/Rollup表中的前36个字节(有varchar类型的可能导致前缀索引不满36个字节,varchar会阶段前缀索引,并且最多使用varchar的20个字节)在底层底村引擎单独生成一份排序的稀疏索引数据(数据也是有排序的,用索引定位,然后在数据中做二分查找),然后在查询的时候会根据查询中的条件来匹配每个Base/Rollup的前缀索引,并选择出匹配前缀索引最长的一个Base/Rollup

聚合数据

要命中聚合物化视图需要下面一些前提:

  1. 查询或者自查询中涉及的所有列都存在一张独立的Rollup中;
  2. 如果查询或者自查询中有Join,则Join的类型需要是Inner join.

如果符合上述条件,则针对聚合模型在判断命中Rollup的时候会有两个阶段:

  1. 首先通过条件匹配出命中前缀索引最长的Rollup表;
  2. 然后比较Rollup行数,选择最小的一张Rollup.
 类似资料: