ClickHouse物化视图

概念:

物化视图是指通过SQL语句从一张表或者多张表查询出来的数据集做持久化存储,针对分布式表做的分布式物化视图不会随着基础表数据变化而变化。单节点的表通过SQL更新可以通过自带的触发器同步数据到物化视图中。所以,一定程度上物化视图可以看作是‘快照’;物化视图与表非常类似,数据存储格式也是由创建视图时指定的表引擎决定,是一种很明显的空间换时间的提高查询效率的方法。网上还有很多概念说,物化视图是完全与源表脱离的,任何数据更新都不会主动同步到物化视图中,这一种博文基本都是没实操,英文翻译水平还很菜那种从官网照搬或者复制过来的。
接下来,我会用自己的几个demo,来证实这些概念性结论

(1)如何创建/删除物化视图?

create MATERIALIZED VIEW jojo_record_mv engine = Log POPULATE AS SELECT * FROM jojo_record;

CREATE MATERIALIZED VIEW jojo_record_mv
ENGINE = Log POPULATE AS
SELECT *
FROM jojo_record

若指定了POPULATE关键字,会把表中现有数据存储到视图中,否则只会写入创建视图之后的数据,例如你表A已经有10W条数据,如果不加POPULATE,创建出来的视图0条数据,如果加了,它就把原来的10W条数据都给你加进新创建的视图里面。注意⚠️:如果你第一次创建没加,不删除视图的情况加了POPULATE关键字再执行一次,不会改变原来的视图内容,还是空空如也。
不建议使用POPULATE关键字,因为在创建视图过程中插入表中的数据并不会写入视图,会造成数据的丢失。例如你创建该视图的期间,有100条数据插入源表,那么这100条数据肯定不会纳入你的视图中(当然也可以自己改源码做优化,定义一个同步数据的偏移量,视图创建完成后再检查一次偏移量是否对等,不对等就从记录偏移量开始读取新数据录入到视图中)。

在这里插入图片描述

jojo_record_mv 就是我们创建的视图,.inner_id.XXX那个是物化视图表,不用管也不用直接操作,但是我们其实可以通过DBeaver工具打开来看

在这里插入图片描述

下来查询一下物化视图

在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值