ClickHouse-物化视图_魔笛Love的博客-CSDN博客_clickhouse 物化视图


本站和网页 https://blog.csdn.net/clearlxj/article/details/121859488 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

ClickHouse-物化视图_魔笛Love的博客-CSDN博客_clickhouse 物化视图
ClickHouse-物化视图
魔笛Love
于 2021-12-10 16:30:14 发布
1552
收藏
文章标签:
数据库
sql
database
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/clearlxj/article/details/121859488
版权
物化视图
ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select,就是 create 一个 table as select 的写法。
“查询结果集”的范围很宽泛,可以是基础表中部分数据的一份简单拷贝,也可以是多表 join 之后产生的结果或其子集,或者原始数据的聚合指标等等。所以,物化视图不会随着基础表的变化而变化,所以它也称为快照(snapshot)
概述
物化视图与普通视图的区别
普通视图不保存数据,保存的仅仅是查询语句,查询的时候还是从原表读取数据,可以将普通视图理解为是个子查询。物化视图则是把查询的结果根据相应的引擎存入到了磁盘或内存中,对数据重新进行了组织,你可以理解物化视图是完全的一张新表。
优缺点
优点:查询速度快,要是把物化视图这些规则全部写好,它比原数据查询快了很多,总的行数少了,因为都预计算好了。
缺点:它的本质是一个流式数据的使用场景,是累加式的技术,所以要用历史数据做去重、去核这样的分析,在物化视图里面是不太好用的。在某些场景的使用也是有限的。而且如果一张表加了好多物化视图,在写这张表的时候,就会消耗很多机器的资源,比如数据带宽占满、存储一下子增加了很多。
基本语法
也是 create 语法,会创建一个隐藏的目标表来保存视图数据。也可以 TO 表名,保存到一张显式的表。没有加 TO 表名,表名默认就是 .inner.物化视图名
CREATE [MATERIALIZED] VIEW [IF NOT EXISTS] [db.]table_name [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...
// [MATERIALIZED]表示创建物化视图
1)创建物化视图的限制
必须指定物化视图的 engine 用于数据存储TO [db].[table]语法的时候,不得使用 POPULATE。查询语句(select)可以包含下面的子句: DISTINCT, GROUP BY, ORDER BY, LIMIT…物化视图的 alter 操作有些限制,操作起来不大方便。若物化视图的定义使用了 TO [db.]name 子语句,则可以将目标表的视图 卸载DETACH 再装载 ATTACH
2)物化视图的数据更新
物化视图创建好之后,若源表被写入新数据则物化视图也会同步更新 POPULATE 关键字决定了物化视图的更新策略: 若有 POPULATE 则在创建视图的过程会将源表已经存在的数据一并导入,类似于create table … as clickhouse 官方并不推荐使用 POPULATE,因为在创建物化视图的过程中会同时写入源表的历史数据,这样会导致视图暂时不可用;如果真要将历史数据存到物理视图中,建议使用insert去插入到物理视图对应的表中。 物化视图不支持同步删除,若源表的数据不存在(删除了)则物化视图的数据仍然保留 物化视图是一种特殊的数据表,可以用 show tables 查看 物化视图数据的删除: 物化视图的删除
案例实操
对于一些确定的数据模型,可将统计指标通过物化视图的方式进行构建,这样可避免查询时重复计算的过程,物化视图会在有新数据插入时进行更新。
准备测试用表和数据
1)建表
CREATE TABLE hits_test
`EventDate` Date,
`CounterID` UInt32,
`UserID` UInt64,
`URL` String,
`Income` UInt8
ENGINE = MergeTree
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)
SETTINGS index_granularity = 8192
2)导入一些数据
INSERT INTO hits_test SELECT
EventDate,
CounterID,
UserID,
URL,
Income
FROM hits_v1
LIMIT 10000
创建物化视图
// 建表语句
CREATE MATERIALIZED VIEW hits_mv
ENGINE = SummingMergeTree
PARTITION BY toYYYYMM(EventDate)
ORDER BY (EventDate, intHash32(UserID)) AS
SELECT
UserID,
EventDate,
count(URL) AS ClickCount,
sum(Income) AS IncomeSum
FROM hits_test
WHERE EventDate >= '2014-03-20'
GROUP BY
UserID,
EventDate
// 设置更新点,该时间点之前的数据可以另外通过insert into select ...... 的方式进行插入
// 或者可以用下列语法,表 A 可以是一张 mergetree 表
CREATE MATERIALIZED VIEW 物化视图名 TO 表 A
AS SELECT FROM 表 B;
// 不建议添加 populate 关键字进行全量更新
// 查看表
show tables;
┌─name───────────┐
│ .inner.hits_mv │
│ hits_mv │
└────────────────┘
// 其中.inner.hits_mv为物化视图对应的表,用来保存视图数据
// hits_mv是视图
// 因为没有加populate,因此此时表中的数据是空的
导入增量数据
往原表插入数据,物化视图对应的表也会进行数据的更新
INSERT INTO hits_test SELECT
EventDate,
CounterID,
UserID,
URL,
Income
FROM hits_v1
WHERE EventDate >= '2014-03-23'
LIMIT 10
// 查询物化视图
SELECT *
FROM hits_mv
┌──────────────UserID─┬──EventDate─┬─ClickCount─┬─IncomeSum─┐
│ 8585742290196126178 │ 2014-03-23 │ 8 │ 16 │
│ 1095363898647626948 │ 2014-03-23 │ 2 │ 0 │
└─────────────────────┴────────────┴────────────┴───────────┘
// 也可以查询物化视图对应的表
SELECT *
FROM `.inner.hits_mv`
导入历史数据
向物化视图导入数据
INSERT INTO hits_mv SELECT
UserID,
EventDate,
count(URL) AS ClickCount,
sum(Income) AS IncomeSum
FROM hits_test
WHERE EventDate = '2014-03-20'
GROUP BY
UserID,
EventDate
总结
能使用物化视图的地方尽量来使用,可以用空间换时间,但是不要使用populate,非要历史数据就使用insert去导入
比如一些固定需要的统计指标,可以通过物化视图快速的进行查询。
魔笛Love
关注
关注
点赞
收藏
打赏
评论
ClickHouse-物化视图
物化视图ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select,就是 create 一个 table as select 的写法。“查询结果集”的范围很宽泛,可以是基础表中部分数据的一份简单拷贝,也可以是多表 join 之后产生的结果或其子集,或者原始数据的聚合指标等等。所以,物化视图不会随着基础表的变化而变化,所以它也称为快照(snaps
复制链接
扫一扫
clickhouse里物化视图如何跟随源表更新数据
Sojer的读书笔记
03-16
7378
创建两个源表,只有两个字段,通过id关联:
CREATE TABLE default.test0 (
`id` String,
`name` String
) ENGINE = MergeTree PARTITION BY id ORDER BY id SETTINGS index_granularity = 8192
CREATE TABLE default.test00 (
`id` St...
clickhouse常见物化视图用法和注意事项
lixia0417mul2的博客
10-03
416
物化视图 物化视图隐藏表 物化视图显式表 物化视图定义 物化视图缺点 物化视图插入性能 物化视图注意事项
参与评论
您还未登录,请先
登录
后发表或查看评论
详解clickhouse中的物化视图
mo
08-19
5484
在讲物化视图前,我们先来回顾一下什么是视图:
视图是由若干个字段以及若干条记录构成(也常称为虚标),它与表有很多相似的地方,视图中的数据源来自于原表,视图本身不存储数据,视图它保存的仅仅是一条select语句,并没有保存真正的数据。
那什么是ck中的物化视图呢 :物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,简单的来理解就是它在普通视图的基础上加上了视图中select后所存储的数据.
CK中物化视图的基本语法:
CRE
ClickHouse物化视图使用总结
最新发布
不才伟才的博客
10-10
243
1、clickhouse物化视图是一种空间换时间的预聚合方式,可以解决表索引问题,我们可以用物化视图创建另外一种物理序,来满足某些条件下的查询问题。2、物化视图因为是写入触发器,所以as select只对每批次的insert data有效果,所以即使是where条件也是对这批写入数据起效果。4、多表join生成物化视图,左表插入数据时才更新。3、物化视图只有在原表insert的时候才会触发。5、源表数据的改变不会影响物化视图。
Clickhouse之物化视图
bigdata_player
05-25
3685
前言
使用过ClickHouse的开发者都知道,ClickHouse能够使用向量化计算快速得出结果,但是并发量不高。如何解决呢?其实我们可以引入物化视图这个概念来解决。
作用
同一个表需要建立不同的索引粒度,提前预聚合
降低查询速度,提高并发量
降低服务的查询压力,cpu使用率平缓利用
使用教程
1.创建本地表
CREATE TABLE if not exists exit \
( \
app_id String, \
view_id UInt64,...
ClickHouse学习(八)物化视图
秘密的博客
08-16
358
目录什么是物化视图使用物化视图好处基本语法创建物化视图向物化视图中增加数据导入历史数据
什么是物化视图
在数据库中视图指的是通过一张或者多张表查询出来的逻辑表,就类似网页版的拳皇一样按UIO就会放招而不是用上下上下BABA那样按,视图就是UIO记录了招式的过程但是并不记录数据.
而clickhouse的物化视图则是把查询的结果和相应的引擎存入到磁盘或内存中,类似形成了一张新的表,但是表中会对自己数据进行重新组织.
使用物化视图好处
可以避免对基础表的频繁查询并复用结果,从而显著提升查询的性能
基本语法
clickhouse物化视图详解
lixia0417mul2的博客
05-04
3634
clickhouse物化视图有常见的两种模式
假设源表定义如下:
create table source_table(id int32, age int32, create_time DateTime) engine=mergeTree() partition by toYYMMDD(create_time) order by id
模式一 隐式创建目标表:
CREATE MATERIALIZED VIEW hide_agg_mv_view(
id int32,
min_age AggregateFu
ClickHouse 物化视图
小王是个弟弟
06-28
661
物化视图可在大量节点上很好地扩展,并适用于大型数据集,极大提高查询速率
clickhouse--物化视图
liuyingying0418的博客
11-24
1037
物化视图
物化视图是查询结果的持久化,可以理解为一张时刻在与计算的表,创建过程中用了一个特殊引擎。但是对 更新 与 删除 操作支持并不好,更像是个插入触发器。
概述
与普通视图的区别
普通视图仅仅保存查询语句,查询的时候还是从原表读取数据。物化视图是把查询的结果根据相应的引擎存入到了磁盘或内存中,对数据重新进行了组织,可以理解为完全的一张新表。
优缺点
优点:查询速度快
缺点:写入过程中消耗较多机器资源,比如带宽占满,存储增加等。本质是一个流式数据的使用场景,是累加式的技术,所以要用历史数据做去重、去核的分
Clickhouse物化视图
just love code
06-30
903
clickhouse的物化视图
【ClickHouse】物化视图
qq_41466440的博客
12-27
783
【ClickHouse】物化视图
clickhouse创建物化视图SQL语句
振钧
12-31
5560
1.上半部分是创建物化视图的建表语句,下半部分是将哪些数据更新到物化视图中;
如果是创建普通视图只需将下半部分中的 MATERIALIZED 字段去掉即可;
CREATE TABLE south.alarm_daily_statistics (
`alarm_time` DateTime DEFAULT CAST('1970-01-01 00:00:01',
'DateTime'),
`...
Clickhouse 物化视图 MATERIALIZED VIEW
热门推荐
vkingnew 的技术博客
06-16
1万+
MATERIALIZED VIEW
物化视图
ClickHouse 物化视图在微信的实战
过往记忆大数据
06-15
1105
前言ClickHouse广泛用于用户和系统日志查询场景中,借助腾讯云提供基础设施,微信也在分阶段逐步推进clickhouse的建设和应用,目前作为基础建设的一部分,主要针对于OLAP场景,...
clickhouse之物化视图
普普通通程序猿的博客
08-12
776
文章目录1. 何为物化视图?2. 幕后英雄-AggregatingMergeTree3. 如何使用物化视图?
用空间换时间是编程世界的指导思想之一。
1. 何为物化视图?
“视图(view)”是传统关系型数据库设计中的一个基本概念,其根本目的是为了简化查询,那么在clickhouse的设计中也借鉴了这一概念。
视图分为普通和物化两种:普通视图的话只是一层简单的查询代理,其本身不会占用任何存储空间,当然也不会带来查询性能的提升;而物化视图则具有独立的存储,在原表写入数据的时候,物化视图的数据也会跟着更新,
中望3D 2021 工程图设计值视图投影
山涧果子(JIanhongwei810)
11-05
611
1,“标准视图”选项关联3D视图和投影视图视角
“标准视图”命令的高级设置页码里新增“视角源自零件”选项,实现3D视图和投影视图视角的参数化关联。关联后和投影视图,在3D视图的视角变化时,将自动提示更新投影视图。如需断开关联,可使用该视图右键菜单里的“视角源自零件”选项。
同时,“标准视图”命令自动从对象列表里选择当前图纸关联对象,避免二次手动选择。
2,“剖切视图”填充颜色源自零件”选项
3,视图比例支持小数
视图比例将原样显示之前输入比例数值,以满足不同的场景需求。
4,视图标签支持随意拖动
ClickHouse物化视图(八)
公众号:Java技术债务,不留下一点技术债务
12-20
1180
文章目录概述1 物化视图与普通视图的区别2 优缺点3 基本语法1) 创建物化视图的限制2) 物化视图的数据更新4 物化视图创建示例5 更多文章和干货请关注公众号
概述
ClickHouse 的物化视图是一种查询结果的持久化,它确实是给我们带来了查询效率的提升。用户查起来跟表没有区别,它就是一张表,它也像是一张时刻在预计算的表,创建的过程它是用了一个特殊引擎,加上后来 as select,就是 create 一个 table as select 的写法。
“查询结果集”的范围很宽泛,可以是基础表中部分数据
ClickHouse大数据分析技术与实战
11-10
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">ClickHouse是一个用于OLAP的数据分析引擎,由俄罗斯搜索巨头Yandex公司开源。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">1、可支持PB级超大容量的数据库管理系统。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">2、基于SQL语句, 使用成本低。 </p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">3、超亿级数据量分析的秒级响应,计算性能横向扩展。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">4、海量数据即查即用。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">5、提供数据的预聚合能力,进一步提升数据查询的效率。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">6、列式存储, 数据压缩,降低磁盘IO和网络IO,提升计算性能,节约70%物理存储。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">7、支持副本, 实现跨机房的数据容灾。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;"><br style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;" />课程基于ClickHouse的**的20.x版本,从理论到实践,由浅入深详解ClickHouse的原理和使用。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">1. 本课程从零开始,有Linux操作系统和SQL使用经验即可。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">2. 课程以案例驱动,包含大量的实践案例。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">3. 将ClickHouse与MySQL、Kafka、HDFS等第三方系统集成,增强ClickHouse的功能。</p>
<p style="font-family: tahoma, 微软雅黑, arial, 宋体; margin: 0px; padding: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 14px; vertical-align: baseline; background: #ffffff; list-style-type: none; color: #333333; word-spacing: 1px;">4. 课程覆盖面广,既有基础功能的详细讲解, 也包含了集群部署、查询优化、运维管理等高级内容。</p>
Clickhouse集群中创建多副本物化视图的方法(重要)
choulisa的博客
11-04
2473
Clickhouse集群中创建物化视图及副本的方法(重要)
创建4个节点的Clickhouse高可用集群,host_name为ck01、ck02、ck03、ck04,分片与副本情况见下图:
使用nginx配置轮询dns写入数据到2个片区的本地表,此处选择ck02、ck03为写入节点,ck01为ck04的副本节点。
所有节点创建集群数据分区表,用于接收初始数据
cREATE TABLE sdecdmp.D20Data
`CreateDate` Date DEFAULT toDate
手动刷新物化视图
jiuweihu521的博客
04-01
1784
假如物化视图名称:MV_T_HR_BMXX_NIRC
1.
ALTER MATERIALIZED VIEW MV_T_HR_BMXX_NIRC REFRESH FAST (没用过)
2.在plsql的命令窗口执行v_czry_group_qx是物化视图名称 (不想用)
exec dbms_mview.refresh('MV_T_HR_BMXX_NIRC');
3.推荐
BEGIN
DBMS_MVIEW.REFRESH (
list => 'MV_T_HR_BMXX_NIRC',
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:精致技术
设计师:CSDN官方博客
返回首页
魔笛Love
CSDN认证博客专家
CSDN认证企业博客
码龄4年
暂无认证
245
原创
4万+
周排名
1万+
总排名
26万+
访问
等级
3580
积分
22
粉丝
68
获赞
72
评论
253
收藏
私信
关注
热门文章
egg项目部署及PM2的使用
23474
egg-sequelize的事务操作
18016
关于Sequelize的分组查询与分组统计
13566
Sequelize数据库中文排序
13095
Sequelize学习整理
11175
分类专栏
vpp
2篇
vpp-agent
1篇
java
50篇
spring-boot
1篇
jvm
3篇
mat
1篇
jmap
1篇
jstack
1篇
sequelize
4篇
util
1篇
aes
1篇
js
9篇
axios
socket.io
1篇
element-ui
1篇
mysql问题
14篇
mariadb
7篇
系统
2篇
eggjs
21篇
nodejs
23篇
docker
2篇
child_process
2篇
子进程
2篇
redis
3篇
git
vuejs
openlayers2
1篇
最新评论
Sequelize数据库中文排序
╮ 小落少爷 *:
有随机排序吗?
Flink-Application模式提交任务到Yarn集群,包括jar包提交方法和javaApi提交方法
qq_39160416:
有解决方案么 大佬
Spark通过Spark-launcher(JavaApi)提交任务到yarn集群
-小末:
while(!SparkAppHandle.State.RUNNING.equals(handle.getState())){
这里死循环
Nodejs对接redis sentinel
会发狂的小明:
应该体现password和sentinelPassword字段:
var redis = new Redis({
sentinels: [{ host: 'redis-sentinel', port: 26379 }],
password: "My-highly-secured-password",
sentinelPassword: "My-highly-secured-password",
name: 'mymaster'
});
Spark通过Spark-launcher(JavaApi)提交任务到yarn集群
zhengx_in:
好的 我去试试
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
vpp-agent的REST API使用及其原理
FD.IO VPP安装与启动
github项目如何下载历史版本
2022年10篇
2021年218篇
2020年13篇
2019年27篇
2018年1篇
目录
目录
分类专栏
vpp
2篇
vpp-agent
1篇
java
50篇
spring-boot
1篇
jvm
3篇
mat
1篇
jmap
1篇
jstack
1篇
sequelize
4篇
util
1篇
aes
1篇
js
9篇
axios
socket.io
1篇
element-ui
1篇
mysql问题
14篇
mariadb
7篇
系统
2篇
eggjs
21篇
nodejs
23篇
docker
2篇
child_process
2篇
子进程
2篇
redis
3篇
git
vuejs
openlayers2
1篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
魔笛Love
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值