跳到主要内容

使用建议

概述

异步物化视图通过预先计算和存储查询结果来提高查询性能,但每次刷新可能带来较大开销。本文档提供异步物化视图的使用建议。 物化视图的刷新原理参考:刷新原理

使用场景建议

推荐使用场景

复杂聚合查询

  • 场景描述: 包含多表连接、复杂聚合函数(如SUM、AVG、COUNT)或窗口函数的查询
  • 优势:避免每次执行时重新计算复杂逻辑

报表

  • 场景描述: 需要按固定时间点(如每日午夜)生成一致性快照的报表
  • 优势:确保所有用户看到相同时间点的数据

计算密集型分析

  • 场景描述: 包含复杂数学计算或数据转换的分析查询,如客户生命周期价值计算、预测分析模型
  • 优势:预先计算结果,减少运行时资源消耗

数据仓库中的星型/雪花模式

  • 场景描述: 事实表与多个维度表连接的场景,如销售事实表与产品、时间、地区等维度表的连接
  • 优势:预先物化连接结果,加速分析查询

湖仓加速

  • 场景描述: 查询数据湖可能由于网络延迟和对象存储的吞吐限制而变慢
  • 优势:利用 Doris 本地存储加速优势,加速数据湖分析

数仓分层

  • 场景描述: 基表中包含大量原始数据,查询需要进行复杂的 ETL 操作
  • 优势:对数据建立多层异步物化视图实现数仓分层

不推荐使用场景

基础表频繁更新

  • 场景描述: 源表数据变更非常频繁(如每分钟多次更新)
  • 问题:异步物化视图难以保持同步,刷新成本过高,需要考虑定期刷新。

简单查询

  • 场景描述: 仅涉及单表扫描或简单过滤的查询
  • 问题:异步物化视图带来的收益无法抵消刷新成本

需要实时(1~5分钟内)数据的场景

  • 场景描述: 业务要求数据必须是最新版本
  • 问题:异步物化视图存在数据延迟

源表数据量很小

  • 场景描述: 基础表只有少量记录(如几百行)
  • 问题:异步物化视图优化效果不明显

刷新策略选择建议

异步物化视图提供三种主要刷新策略,每种策略适用于不同的业务场景和数据特征。合理选择刷新策略对于平衡数据新鲜度和系统性能至关重要。

刷新策略详解

手动刷新

工作方式:

  • 由用户通过显式命令或外部系统调度触发

适用场景:

  • 对数据实时性要求不高的报表系统
  • 数据仓库中的历史数据分析
  • 需要与特定业务流程同步刷新的场景
  • 大规模数据刷新需要协调系统资源时

优缺点:

优点:完全控制刷新时机,可避开业务高峰期

缺点:需要额外管理刷新调度,需要做好容错,方式外部循环不断的刷新。

定时刷新

工作方式:

  • 按固定时间间隔自动刷新
  • 最小时间单位为分钟级
  • 可指定第一次运行任务的开始时间

适用场景:

  • 周期性业务指标监控
  • 阶梯式数据管道
  • 时间敏感度分级的报表体系
  • 有规律波动的源数据

优缺点:

优点:定时数据处理,确定性的数据延迟

缺点:数据新鲜度局限,相关视图的刷新时序需要人工编排

配置约束:

不建议将所有物化视图设置为高频定时刷新,达到类实时的目的,这会导致:

  • 系统资源持续被占用
  • 刷新作业相互竞争资源
  • 频繁增删partition/tablet等,对be造成较大压力

触发式刷新

工作方式:

  • 当基表数据变更时自动触发刷新

适用场景:

  • 多层物化视图架构的上层视图
  • 基表变更频率较低的场景

优缺点:

优点:数据新鲜度高,自动化程度高

缺点:可能造成刷新风暴,难以预测系统负载

配置约束:

不建议对基础层物化视图使用触发式刷新,除非:

  • 能明确知道基表刷新频率不高(如:几十分钟变更一次)

刷新策略组合建议

分层策略

  • 基础层:定时刷新(如每小时)
  • 中间层:定时或触发式刷新
  • 展示层:触发式刷新或手动刷新

业务关键性分级

  • 关键实时业务数据:不建议使用异步物化视图
  • 常规分析数据:定时刷新(每日/每小时)
  • 历史/归档数据:手动刷新

数据变更频率适配

  • 高频变更:定时刷新(较长间隔)或手动刷新
  • 低频变更:触发式刷新或短间隔定时刷新
  • 批量变更:变更后手动刷新

刷新频率建议

此建议仅为通用建议,实际还需根据系统资源,异步物化视图数量,其它业务资源占用等情况综合评估

实际刷新耗时刷新频率
小于15s大于等于5分钟
小于10分钟大于等于1小时
小于1小时大于等于1天

异步物化视图注意点

  1. 监控:物化视图运行后要通过 metrics及时监控系统运行情况,后续异步物化视图自身也会暴露更多的监控指标,目前可通过tasks查看任务数量,执行状态,任务耗时等信息
  2. 规划:要规划要物化视图的运行个数,运行频率,集群的最大计算量这些。切记不要“只管建物化视图,不维护物化视图”,物化视图本质上是增强的ETL计算,和传统ETL一样需要维护。
  3. 资源隔离:物化视图是数据计算任务,需要按需做好资源隔离。