用途:面向 ClickHouse 物化视图(MV)的设计与排错,适用于实时聚合、ETL 管道与查询加速。
核心认知:MV 是触发器而非缓存,只处理 INSERT 写入的每个数据块,不查询历史数据;不自动回填,历史数据需手动 INSERT。
主要能力与模式:
- 实时计数(SummingMergeTree)适合可加和的 sum/count;注意 uniq() 在 SummingMergeTree 中不准确。
- 复杂聚合(AggregatingMergeTree):使用 sumState、uniqState、quantileState 写入,查询用 sumMerge、uniqMerge、quantileMerge,即“-State 入库、-Merge 查询”。
- 数据转换管道:用普通 MergeTree 目标表,在插入时做 JSON 解析与字段抽取。
- 最新值跟踪(ReplacingMergeTree):配合 argMax 查询模式,避免在大表上用 FINAL。
关键规则:目标表 ORDER BY 必须与 MV 的 GROUP BY 匹配;MV 只看到 INSERT;链式 MV(A→B→C)看到的是预聚合块而非合并后表状态,链式 AggregatingMergeTree 需用 sumMergeState/uniqMergeState。
常用管理命令:ALTER TABLE 源表 DETACH/ATTACH MATERIALIZED VIEW 暂停与恢复;MV 不可 ALTER,需 DROP 后重建并回填;可用 system.tables 与 system.parts 查看状态和体积。
限制与坑:一个源表过多 MV 会拖慢 INSERT;uniq 与 SummingMergeTree 组合、查询漏用 -Merge、漏用 argMax、未回填均会导致结果异常;链式与并行拓扑资源消耗接近,应按查询粒度而非性能假设选择拓扑。
资料未提供该技能的安装方式、收费与许可信息。