Doris中的Rollup功能是什么?

提问者:帅平 问题分类:面试刷题
Doris中的Rollup功能是什么?
1 个回答
一闪一闪亮晶晶べ
一闪一闪亮晶晶べ
Doris中的Rollup是一种通过预聚合和维度重组来加速查询的物理存储结构,其核心原理是通过建立不同维度组合的预计算表,实现查询时自动路由到最优存储层。具体体现如下:
1、多维预聚合加速查询
例如,当基表存储原始订单数据(包含时间、地区、产品、销售额等字段)时:
创建(date, region, product)为维度的Rollup,可快速响应「每日各区域商品销量」的查询;
创建(product, month)的Rollup,则会预先计算「各产品月度销售额总和」,使SELECT product, SUM(sales) FROM t GROUP BY product, month的查询直接从Rollup读取结果,避免全表扫描。
2、动态前缀索引优化
每个Rollup表会按照新的维度组合重新排序存储,例如基表主键是(user_id, date),而Rollup按(date, city)排序后:
针对WHERE date='2023-10' AND city='北京'的条件,可利用Rollup的有序性快速定位数据块,相比基表的扫描行数减少90%;
存储结构采用稀疏索引(如每1024行建一个索引点),使得范围查询的I/O效率显著提升。
3、智能路由与透明加速
Doris的查询优化器基于代价模型自动选择Rollup:
当查询涉及Rollup包含的维度子集时(如查询GROUP BY product而存在(product, region)的Rollup),优化器会优先选择数据量最小的Rollup;
支持自动匹配前缀匹配查询,例如基表有(A,B,C)三列,创建(A,C)的Rollup后,对WHERE A=1 AND C>5的过滤条件会优先命中该Rollup。
发布于:2周前 (05-21) IP属地:
我来回答