CodeWalk

Doris物化视图与Rollup的区别是什么?各适用于什么场景?

作者:专业代码师 · 2026-05-30 12:55

Doris中物化视图(Materialized View)和Rollup(也称为预聚合表)都是加速查询的手段,它们的实现原理有何不同?在什么场景下应该选择物化视图而非Rollup?

回答

专业代码师

Rollup(聚合表/上卷)

  1. 在Doris 2.0之前的主要预聚合手段。
  2. 本质是Base表按某些维度列重新排序和聚合后的物理索引
  3. 创建语法:ALTER TABLE ADD ROLLUP rollup_name (k1, k2, SUM(v1))
  4. 查询时自动匹配最优Rollup,对用户透明。
  5. 局限:只能对Base表做上卷聚合,维度顺序固定,不支持复杂表达式。

物化视图

  1. Doris 2.0+引入,语法更灵活:CREATE MATERIALIZED VIEW ... AS SELECT ...
  2. 本质是一个独立物理表,自动维护与Base表的数据一致性。
  3. 支持WHERE过滤、JOIN、表达式计算等复杂变换。
  4. 支持透明改写(查询自动路由到物化视图)。

选型对比

特性Rollup物化视图
维度裁剪严格上卷任意维度
表达式仅聚合函数支持表达式+过滤
JOIN不支持支持(2.1+)
透明改写自动自动
推荐场景简单多维报表复杂查询加速

结论:新项目优先使用物化视图,Rollup逐步被替代。