一、Clickhouse的物化视图
今天来简单介绍一下clickhouse的物化视图
物化视图与普通视图的区别:
普通视图不保存数据,保存的仅仅是查询语句,查询的时候还是从原表读取数据,可以将普通视图理解为是个子查询,物化视图则是把查询的结果根据相应的引擎存入到了磁盘或内存中,对数据重新进行了组织,你可以理解物化视图是完全的一张新表。
物化视图支持表引擎,数据保存形式由它的表引擎决定,创建物化视图的完整语法如下:
create materialized view mv_log engine=Log populate as select * from log;
物化视图创建好之后,如果源表被写入新数据,那么物化视图也会同步更新。populate 决定了物化视图的初始化策略:如果使用了populate 修饰符,
那么在创建视图的过程中,会连带将源表中已存在的数据一并导入,如同执行了 insert select 一般;反之,如果不使用 populate 修饰符,那么物化视图在创建之后是没有数据的,
它只会同步在此之后被写入源表的数据。
注:生产中并不建议使用 populate关键字来修饰,历史数据可以通过insert into的方式来进行导入
物化视图目前并不支持同步删除,如果在源表中删除了数据,物化视图的数据仍会保留。
create materialized view test3_view engine = Log populate as select * from tb_test3;
-- 建表的时候同步数据,当数据被更新以后,物化视图中的数据会同步更新,但是当删除数据以后,物化视图中的数据不会被删除。