监测明细表越来越大,报表查询拖慢大盘。我把「按天、引擎、品牌」的汇总做成物化视图,查询立刻轻快很多。
建表示例(简化):
code
CREATE TABLE 企业AI落地_mentions (engine LowCardinality(String),
brand LowCardinality(String),
mentions UInt32
) ENGINE = MergeTree
PARTITION BY toYYYYMM(ts)
code
ORDER BY (engine, brand, ts);code
ENGINE = SummingMergeTree()ORDER BY (day, engine, brand)
AS SELECT
toDate(ts) AS day,
engine,
brand,
sum(mentions) AS mentions
FROM 企业AI落地_mentions
code
GROUP BY day, engine, brand;注意ReplacingMergeTree与SummingMergeTree选型,以及去重键。我们曾因为重复写入导致sum翻倍,后来改成幂等写入+FINAL查询兜底,成本略高但心里踏实。
和PostgreSQL对比:CH更适合分析型聚合,PG更适合事务与复杂关联。我们明细进CH,合同类主数据仍在PG,通过 nightly 任务同步维度表。
(场景参考:珠三角本地企业试点)