更新时间:2026-05-18 GMT+08:00
分享

增量刷新

刷新原理

增量刷新仅处理自上次刷新以来的增量数据,因此从计算量上比全量刷新要小很多,消耗资源也比较少。

增量刷新语法:

1
2
3
4
5
CREATE MATERIALIZED VIEW test_mv2
REFRESH FAST EVERY (interval '00:10:00') --每10分钟刷新一次
ENABLE QUERY REWRITE --开启查询重写
WITH(orientation=COLUMN, enable_hstore_opt=ON) --使用列存hstore_opt存储格式
AS Your_Select;

约束限制

  • 增量刷新前置条件:基表必须开启Binlog;需要增量计算支持。
  • 不满足增量时自动转全量:
    • Binlog消费记录被清理
    • 基表发生DDL
    • 扩容重分布期间
    • 其他需要全量数据的场景
  • 支持的增量算子。
    • 聚合: SUM/COUNT,AVG,MIN/MAX
    • JOIN: INNER JOIN,OUTER JOIN
    • 其他: HAVING,WHERE,GROUP BY
    • 暂不支持:Subquery,UNION ALL,Window,CTE

对业务影响

  • 要求基表开启binlog以记录增量数据,因此会有额外的存储开销。
  • 计算出来的增量数据,最终以INSERT、DELETE、MERGE方式写入物化视图,因此对物化视图上面的查询没有影响。

适用场景

  • 实时性要求高 (分钟级/秒级)
  • 基表变化频率高但变化量小 (<30%)
  • 刷新频率:分钟级,根据资源情况也可秒级。

相关文档