clickHouse物化视图的原理及应用

1、物化视图设计约束

由于TTL规则不会从原始表中同步到物化视图表,因此源表中带有TTL规则时,物化视 图表同样需要配置TTL规则,并且建议与源表保持一致。

2、应用场景

在查询方式固定的场景,建议使用物化视图加速。

3、普通物化视图与 projection 对比

物化视图类 型原表数据与物化视 图一致性灵活性物化视图开发及维护复 杂度
普通物化视 图● 数据从原表同 步到物化视图 需要时间窗● 灵活性较高,有新 的业务可开发新的 物化视图; ● 可开发复杂逻辑SQL 语句的物化视图。● 复杂度较高,需要 开发很多物化视 图,每个物化视图 都需要单独去管理 和维护
projection● 数据实时同 步,数据写入 即可查询到物 化视图最新数 据● 创建表时指定的物 化视图语法,新的 SQL业务需要修改表 结构● 不需要开发很多物 化视图,任意查询 SQL会自动重写命中 物化视图

4、物化视图创建样例

CREATE MATERIALIZED VIEW counter_daily_mv ON CLUSTER default_cluster
TO counter_daily_agg
AS
SELECT
toStartOfDay(when) as day,
device,
count(*) as count,
maxState(value) AS max_value_state,
minState(value) AS min_value_state,
avgState(value) AS avg_value_state
FROM counter
WHERE when >= toDate('2024-02-01 00:00:00')
GROUP BY device, day
ORDER BY device, day;

创建物化视图counter_daily_mv,数据存储到表counter_daily_agg中,数据源来自counter。

● 聚合表在明细表名后加上_{type}_agg后缀;物化视图添加 _{type}_mv后缀。

● 物化视图、聚合表保持与明细表同样的分区类型及ttl时间。

● 物化视图中的group by字段名称与明细表对应字段名称一致;select子句返回列名 称与聚合表中列的名称保持一致。

● 物化视图创建时不会进行语法校验,只有发生实际数据插入与查询时才会出错。

● 物化视图上线前,需做好充分验证。

5、物化视图规则

物化视图(Materialized View)显式指定聚合表。 在创建物化视图时,使用TO关键字为物化视图指定数据存储表。 如果不显示指定聚合表,则会创建隐式表.inner.mv1,与物化视图绑定。

● 用于数据预聚合的物化视图,聚合表使用聚合引擎。 如果不用聚合引擎,则每次数据插入,会对明细表的全量数据重新计算,而不是 只处理增量数据。

● 聚合表中,聚合指标定义成聚合类型(AggregateFunction)。 物化视图的指标列与聚合表中对应字段名称一致,命名规范如下: {aggrateFunction}_{columnName}_state 聚合表创建样例: 

CREATE TABLE counter_daily_agg ON CLUSTER default_cluster
(
day DateTime,
device UInt32,
count UInt64,
max_value_state AggregateFunction(max, Float32),
min_value_state AggregateFunction(min, Float32),
avg_value_state AggregateFunction(avg, Float32)
)
ENGINE = SummingMergeTree()
PARTITION BY tuple()
ORDER BY (device, day);

● 在创建物化视图时,如果用到了多表联查,只有左表发生数据插入时才会触发物 化视图数据修改

● 禁止在创建物化视图时使用POPULATE关键字 使用POPULATE方式创建物化视图期间,如果有数据插入,则可能丢失。

● 推荐的历史数据同步方式为通过select历史数据并insert进物化视图本地表中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值