一、概念

clickhouse的物化视图是一种查询结果的持久化,给我们带来了查询效率的提升。用户查询效果和查表没有区别,其本质就是一张表,一张时刻在预计算的表,创建的过程用了一个特殊引擎:

注:使用create语法,会创建一个隐藏的目标来保存视图数据,使用To表名,保存到一张显示的表,没有加To表名,表名默认就是.inner.物化视图名,

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db.]table_name [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT …

“查询结果集”的范围很广泛,可以是基础表中部分数据的一份简单拷贝,也可以是多表join之后产生的结果或其子集、或者原始数据的聚合指标等等。所以,物化视图不会随着基础表的变化而变化,所以也称为快照

创建物化视图的限制

1、必须指定物化视图的engine用于数据存储

2、使用To[db].[table]语法时,不得使用POPULATE,POPULATE会将历史数据全都加载转换过来,数据量大时存在一个不可用时间(官方并不推荐在创建物化视图的时候使用POPULATE,因为在创建物化视图过程中同时写入的数据不能被插入物化视图)

3、查询语句(select)可以包含下面的句子:DISTINCT、GROUP BY、LIMIT等

4、若物化视图的定义使用了 TO [db.]name 子语句,则可以将目标表的视图卸载DETACH 再装载 ATTACH

物化视图和普通视图的区别:

普通视图不保存数据,保存的仅仅是查询语句,查询的时候还是从原表中读取数据,可以将普通视图理解为是个子查询。

物化视图则是 把查询的结果根据相应的引擎存入到磁盘或者内存中,对数据重新进行了组织,生成了一张新表

优缺点:

优点:查询速度快,提前将物化视图规则写好,比直接查询原数据了很多 (物化视图起到了一个同步的作用)

缺点:本质是流式数据 的使用场景,采用累加式的技术,要用到历史数据做去重、去核这样的分析。使用场景有限,如果一张表加了很多物化视图,在写这张表的时候会消耗很多及其的资源,比如数据带宽占满,存储量突增

#创建表
CREATE TABLE `ts_area_info` (id UInt32 ,createDate Date ,userId UInt32 ,url String,income UInt8
) ENGINE=MergeTree()
PARTITION BY toYYYYMM(createDate)
ORDER BY  (id,createDate,intHash32(userId))
SAMPLE BY  intHash32(userId)
SETTINGS index_granularity = 8192#创建物化视图 CREATE MATERIALIZED VIEW area_mvENGINE  SummingMergeTreePARTITION BY toYYYYMM(createDate)ORDER BY  (id,createDate,intHash32(userId))AS select * from ts_area_info;

新生成的物化视图:

关键字段:

populate:建表同步数据

final:去最新的数据

二、物化视图作为聚合表

同步数据的时候实现聚合

 #使用物化视图同步聚合表1、创建明细表drop table tb_order;create table tb_order(id UInt8 ,createDate Date ,money  UInt64)ENGINE =MergeTree()order by id;2、插入数据insert into tb_order values(1,toDate(now()),100),(2,toDate(now()),100),(3,toDate(now()),100),(1,toDate(now()),100),(2,toDate(now()),200),(3,toDate(now()),300);3、创建物化视图同步数据CREATE MATERIALIZED VIEW order_mvENGINE  AggregatingMergeTree()PARTITION BY toYYYYMM(createDate)ORDER BY  (id,createDate)POPULATE AS select id,createDate,sumState(money) as ms from tb_orderGROUP BY id,createDate;4、查询物化视图
select id,createDate,sumMerge(ms) from order_mv GROUP BY id,createDate; 5、重新插入查看同步数据
insert into tb_order values(1,toDate(now()),100),(2,toDate(now()),100);insert into tb_order values(1,toDate('2022-06-29'),100),(2,toDate('2022-06-29'),100);6、查询订单表
select * from tb_order;

注:

在建表时没有指定主键,会默认使用order by的字段作为主键

Clickhouse物化视图相关推荐

  1. clickhouse 物化视图使用详解

    前言 视图这个概念大家并不陌生,在mysql中,视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据.作为一个select语句保存在数据字典中的.通过视图,可以展现基表(用来创建视图的表 ...

  2. ClickHouse 物化视图

    像通常的计算一样,强大的能力意味着至少有一点复杂性.这篇由两部分组成的文章通过准确解释物化视图的工作原理来填补空白,以便即使是初学者也可以有效地使用它们.我们将提供几个详细的示例,您可以根据自己的用途 ...

  3. clickhouse物化视图优缺点_ClickHouse 适用场景

    Clickhouse是一个用于联机分析处理(OLAP)的列式数据库管理系统(columnar DBMS). 传统数据库在数据大小比较小,索引大小适合内存,数据缓存命中率足够高的情形下能正常提供服务.但 ...

  4. clickhouse 物化视图_再谈clickHouse:微博基于 ClickHouse 监控百亿流量下的指标

    一.前言 广告业务监控中,我们经常碰到多维度的数据储存和查询分析需求,比如,我们可能需要基于秒级粒度去统计某个接口 TP999 耗时,或者需要基于秒级粒度去统计微博广告在各个场景下的请求量,再或者我们 ...

  5. ClickHouse 物化视图在微信的实战

    前言 ClickHouse广泛用于用户和系统日志查询场景中,借助腾讯云提供基础设施,微信也在分阶段逐步推进clickhouse的建设和应用,目前作为基础建设的一部分,主要针对于OLAP场景,为业务方提 ...

  6. Clickhouse 物化视图 MATERIALIZED VIEW

    MATERIALIZED VIEW 物化视图物化视图支持表引擎,数据的保存形式由表的引擎决定.创建语法: CREATE [MATERIALIZED] VIEW [IF NOT EXISTS] [db. ...

  7. Clickhouse物化视图详解

    文章目录 物化视图 1 概述 1.1 物化视图与普通视图的区别 1.2 优缺点 1.3 基本语法 1.4 创建物化视图的限制 1.5 物化视图的数据更新 2 案例实操 2.1 准备测试用表和数据 2. ...

  8. 【Clickhouse】Clickhouse 物化视图 MATERIALIZED VIEW

    文章目录 1.概述 2.物化视图 2.案例 2.1 案例1 参考: 1.概述 2.物化视图 物化视图支持表引擎,数据的保存形式由表的引擎决定. 创建语法: CREATE [MATERIALIZED] ...

  9. drop 很慢 物化视图_clickhouse 物化视图的踩坑记录

    由于线上查询大于1s,需要对于该次查询进行优化:为了加快查询的效率,我们在基础表上建立了一个物化视图 CREATE MATERIALIZED VIEW dwst.tt ( `sort_key` UIn ...

最新文章

  1. (转)OpenNLP进行中文命名实体识别(下:载入模型识别实体)
  2. 关于mysql报 loopWaitCount 0, wait millis 60000 错误的解决办法
  3. ITK:从图像区域中随机选择像素
  4. 浅谈微视推荐系统中的特征工程
  5. C++中的(unsigned int)代表的意思
  6. Js中Proxy对象
  7. java 线程安全性_i++是线程安全的吗?如何解决线程安全性?
  8. 微信公众号开发 包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证 2017.12.2...
  9. 漫画:什么是优先队列?
  10. ASP读取文件 ASP写入/保存文件
  11. 奥托尼克斯接近开关型号_奥托尼克斯接近开关型号如何选?
  12. 微信小程序连接WiFi
  13. arc用matlab表示,arctanx在matlab中怎么表示?
  14. 戴尔 OptiPlex 3020重新安装win10系统的教程
  15. L1-058 6翻了
  16. shtml 是什么?
  17. 数字证书X509格式标准简介
  18. libgdx 处理加速传感器
  19. 基金委发布项目申报指南
  20. 360手机安全专家给出了八大安全防范建议

热门文章

  1. 优秀个人博客网站收集
  2. 夏普复印机设置手机打印和扫描详细教程
  3. das服务器文件积压,外部存储分类:DAS,SAN,NAS
  4. unique(C++)函数
  5. 聊聊我的试用期总结(不知名公司算法工程师
  6. Django基于大数据的应届生求职系统
  7. 论文阅读笔记 | 三维目标检测——MV3D算法
  8. 协同管理软件在企业数字化运营中可以起到的作用
  9. matplotlib plt.imshow(),明明只有0,1像素,但是输出的图片是紫色和黄色的
  10. 我上了大学,大学上了我