Doris物化视图与Rollup的区别是什么?各适用于什么场景?
Doris中物化视图(Materialized View)和Rollup(也称为预聚合表)都是加速查询的手段,它们的实现原理有何不同?在什么场景下应该选择物化视图而非Rollup?
回答
专业代码师
Rollup(聚合表/上卷):
- 在Doris 2.0之前的主要预聚合手段。
- 本质是Base表按某些维度列重新排序和聚合后的物理索引。
- 创建语法:
ALTER TABLE ADD ROLLUP rollup_name (k1, k2, SUM(v1))。 - 查询时自动匹配最优Rollup,对用户透明。
- 局限:只能对Base表做上卷聚合,维度顺序固定,不支持复杂表达式。
物化视图:
- Doris 2.0+引入,语法更灵活:
CREATE MATERIALIZED VIEW ... AS SELECT ...。 - 本质是一个独立物理表,自动维护与Base表的数据一致性。
- 支持WHERE过滤、JOIN、表达式计算等复杂变换。
- 支持透明改写(查询自动路由到物化视图)。
选型对比:
| 特性 | Rollup | 物化视图 |
|---|---|---|
| 维度裁剪 | 严格上卷 | 任意维度 |
| 表达式 | 仅聚合函数 | 支持表达式+过滤 |
| JOIN | 不支持 | 支持(2.1+) |
| 透明改写 | 自动 | 自动 |
| 推荐场景 | 简单多维报表 | 复杂查询加速 |
结论:新项目优先使用物化视图,Rollup逐步被替代。