首页/数据/NoSQL 速查/物化视图与增量聚合
ClickHouse56 条

物化视图与增量聚合

ClickHouse 物化视图是触发式计算:源表插入新块时按 SELECT 逻辑计算并写入目标表(TO 形式),常用于实时预聚合、字段转换与列裁剪。

NoSQL 速查数据更新于 2026-10-12
结构CREATE MATERIALIZED VIEW mv TO target AS SELECT … FROM source
触发时机只处理插入源表的新数据块;历史数据迁移用 POPULATE 或手动 INSERT SELECT
不含 TO 的形式视图自身存储结果,结构改动与查询效率不如显式目标表灵活

示例

示例
CREATE TABLE events_by_minute
(
    minute DateTime,
    event_type LowCardinality(String),
    cnt UInt64
)
ENGINE = SummingMergeTree
ORDER BY (minute, event_type);

CREATE MATERIALIZED VIEW mv_events_minute TO events_by_minute AS
SELECT toStartOfMinute(event_time) AS minute,
       event_type,
       count() AS cnt
FROM events
GROUP BY minute, event_type;
视图定义里的聚合按块计算,跨块结果依靠目标表的引擎(如 SummingMergeTree)合并收敛。

易错点

  • POPULATE 在创建瞬间回灌历史数据,期间写入的数据会丢失,历史回灌更推荐 ATTACH 或 INSERT SELECT
  • 改视图定义要 DROP 后重建,期间新数据不再进目标表,注意补数

数据来源与参考

  • ClickHouse Docs: Materialized view
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌