Clickhouse学习(一):MergeTree概述
MergeTree
- 一、Clickhouse表引擎概述
- 二、MergeTree表引擎
- <一>、ReplacingMergeTree引擎
- <二>、SummingMergeTree引擎
- <三>、AggregatingMergeTree引擎
- 三、MergeTree分区
一、Clickhouse表引擎概述
-
MergeTree表引擎:允许根据日期和主键创建索引
1、ReplacingMergeTree:该引擎和 MergeTree 的不同之处在于它会删除具有相同主键的重复项。数据 的去重只会在合并的过程中出现。因此,ReplacingMergeTree 适用于在后台清除重复的数据以节省空 间,但是它不保证没有重复的数据出现。
2、SummingMergeTree:把所有具有相同主键的行合并为一行,并添加合并行的聚合值。如果单个键值 对应于大量的行,则可以显著的减少存储空间并加快数据查询的速度。
3、AggregatingMergeTree:将相同主键的所有行(在一个数据片段内)替换为单个存储一系列聚合函 数状态的行。可以使用 AggregatingMergeTree 表来做增量数据统计聚合,包括物化视图的数据聚合 -
Distributed分布式引擎本身不存储数据,但可以在多个服务器上进行分布式查询
-
外部存储表引擎,如HDFS、Mysql、JDBC、Kafka、File,相当于外部数据源
-
内存表引擎,如Memory、Set、Join、Buffer,实现内存加速和各种功能
-
还有其他如日志表引擎、接口引擎(自定义)、Null表引擎、URL表引擎
二、MergeTree表引擎
需要注意两点:
- MergeTree的主键(primary key)只是用来生成一级索引(primary)的,并没有唯一性约束这样的语义;order by决定了每个分区中数据的排序规则,order by可以指代primary key,通常只用声明order by即可
- 通常只有SummingMergeTree或AggregatingMergeTree的时候,才需要同时设置order by和primary
key,显式的设置primary key,是为了将主键和排序键设置成不同的值,是进一步优化的体现,比如聚合条件group by a,b,c,过滤条件where A,此时order by a,b,c,primary key a,注意,如果order by和primary key不同,primary key必须是order by的前缀(为了保证分区内数据和逐渐的有序性)
<一>、ReplacingMergeTree引擎
设计为相同分区的数据进行数据去重
- 使用order by排序键作为唯一键
- 以分区为单位进行去重,只在分区合并时进行触发
- 如果参数没设置列,则保留重复数据的最后一行
- 如果参数设置了列,则保留重复数据中取值最大的一行
<二>、SummingMergeTree引擎
只需要根据group by条件得到汇总结果(sum),不关心明细数据,解决存储和查询的开销
- 使用order by排序键作为聚合汇总的条件key
- 以分区为单位进行聚合,只在分区合并时进行触发
- 如果指定了columns汇总列,则sum汇总这些字段
- 如果未指定columns汇总列,则sum汇总在所有非主键的数值类型字段
- 如果order by和primary key的字段不相同,pk列字段必须是order by的前缀,即order by(b,c)
primary key A不合法 - 非聚合字段,使用第一行数据的取值
<三>、AggregatingMergeTree引擎
AggregatingMergeTree是SummingMergeTree的升级版。聚合函数通过AggregateFunction实现
- 使用order by排序键作为聚合数据的条件key
- 以分区为单位进行聚合,只在分区合并时触发
- 不需要指定列,但需要通过AggregateFunction声明
- 写入数据时,需要调用State;读取数据,需要调用Merge
- 数据不能通过普通的insert插入,而只能通过insert into select
三、MergeTree分区
MergeTree…Partition By toYYYYMM(Date)
- ClickHouse的表可以根据任意表达式分区
- 不同分区不会合并
- 合并可以通过optimize table命令触发
- 可以对分区进行操作
在MergeTree引擎下,每次insert into,即使数据属于同一个分区,但数据在存储上都会生成一个新的分区目录.目录名为201909_1_1_0
命名规范:
parititionId_minBlockNum_maxBlockNum_level
BlockNum:数据表全局自增,初始值从1开始,新建分区minBlockNum和maxBlockNum相同
Level:合并的次数
相关文章:
Clickhouse学习(一):MergeTree概述
MergeTree一、Clickhouse表引擎概述二、MergeTree表引擎<一>、ReplacingMergeTree引擎<二>、SummingMergeTree引擎<三>、AggregatingMergeTree引擎三、MergeTree分区一、Clickhouse表引擎概述 MergeTree表引擎:允许根据日期和主键创建索引 1、ReplacingMerge…...
Windows离线安装rust
目前rust安装常用的方式就是通过Rustup安装,此安装方式需要访问互联网。在生产环境中由于网络限制,不能直接访问互联网或者不能访问目标网站,这时候需要用离线安装的方式,本文将详细介绍离线安装步骤,并给出了vscode如…...
Android与flutter混合开发
这里我使用的android studio版本是2020.3.1;flutter版本2.5.3。此前在网上搜索的很多教教程版本都不一样,新版的IDE和SDK让我遇到了很多坑故这里整理一下。一、创建项目1.在Android项目中点击File->New->New Flutter Project。File->New->Ne…...
Linux和C语言的学习方法你真的知道吗?
★Linux的使用 第一天,就给我们讲了为什么要先学c、学linux:因为嵌入式的根本就是软件驱动硬件,而C语言是最接近硬件的语言、有指针的概念、可以直接操作硬件,另外,功能复杂的硬件是含有操作系统的,这就需…...
代码随想录day42
1049. 最后一块石头的重量 II https://leetcode.cn/problems/last-stone-weight-ii/ 这个自己还是没想出来01背包对应。 本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 stones [2,7,4,1,8,1]也就是sum…...
【笔记】两台1200PLC进行S7 通信(1)
使用两台1200系列PLC进行S7通信(入门) 文章目录 目录 文章目录 前言 一、通信 1.概念 2.PLC通信 1.串口 2.网口 …...
统一网关Gateway
为什么需要网关 网关功能: 身份认证和权限校验服务路由,负载均衡 根据请求判断找到对应的服务路由,然后服务可能有多个实例,这个时候网关就会做一个负载均衡去挑选一个实例调用.请求限流 限制请求的数量,这是微服务的…...
6、kubernetes(k8s)安装
本文内容以语雀为准 文档 等等,Docker 被 Kubernetes 弃用了?容器运行时端口和协议kubeadm initkubeadm config安装网络策略驱动使用 kubeadm 创建集群 控制平面节点隔离 持久卷为容器设置环境变量在CentOS上安装Docker引擎Pod 网络无法访问排查处理 说明 本文…...
python-批量下载某短视频平台音视频标题、评论、点赞数
python-批量下载某短视频平台音视频标题、评论数、点赞数前言一、获取单个视频信息1、获取视频 url2、发送请求3、数据解析二、批量获取数据1、批量导入地址2、批量导出excel文件3、批量存入mysql数据库三、完整代码前言 1、Cookie中文名称为小型文本文件,指某些网…...
【数据结构与算法】单链表的增删查改(附源码)
这么可爱的猫猫不值得点个赞吗😽😻 目录 一.链表的概念和结构 二.单链表的逻辑结构和物理结构 1.逻辑结构 2.物理结构 三.结构体的定义 四.增加 1.尾插 SListpushback 2.头插 SListpushfront 五.删除 1.尾删 SListpopback 2.头删 SListpo…...
华为OD机试 - 回文字符串
题目描述 如果一个字符串正读和反渎都一样(大小写敏感),则称它为一个「回文串」,例如: leVel是一个「回文串」,因为它的正读和反读都是leVel;同理a也是「回文串」art不是一个「回文串」,因为它的反读tra与正读不同Level不是一个「回文串」,因为它的反读leveL与正读不…...
C语言太简单?这14道C语言谜题,你能答对几个
14个C语言的迷题以及答案,代码应该是足够清楚的,而且有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。 如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。 下面的…...
Benchmark测试——fio——源码分析
1. main 1.1 parse_options() 解析选项,更新数据结构 1.1.1 fio_init_options() 1.1.2 fio_test_cconv(&def_thread.o) <cconv.c> 1.1.2.1 convert_thread_options_to_cpu() 传递options给数据结构 1.1.3 parse_cmd_line() switch语句多路选择&am…...
测量 R 代码运行时间的 5 种方法
简介 平常在撰写论文时,会需要比较算法之间的计算时间。本篇文章给出几种测量 R 代码运行时间的方法。本文是小编学习过程中的笔记,主要参考博客1,2。 1. 使用 Sys.time() 小编通常使用 Sys.time() 函数来计算时间。首先记录当前运行时刻&…...
Qt 第9课、计算器中缀转后缀算法
计算器核心算法: 1、将中缀表达式进行数字和运算符的分离 2、将中缀表达式转换成后缀表达式 3、通过后缀表达式计算最后的结果 二、计算器中缀转后缀算法 计算器中缀转后缀算法的意义在于把中缀表达式转换成后缀表达式,能够更好地计算 算法的基本思路…...
docker的使用方法
docker技术 同一个操作系统内跑多套不同版本依赖的业务 docker可以使同一个物理机中进程空间,网络空间,文件系统空间相互隔绝 虚拟机弊端:每个需要安装操作系统,太重量级,资源需要提前分配好 部署程序 开发环境 win…...
Kafka(五)生产者向发送消息的执行流程
(1)生产者要往 Kafka 发送消息时,需要创建 ProducerRecoder,代码如下: ProducerRecord<String,String> record new ProducerRecoder<>("CostomerCountry","Precision Products","France&q…...
华为OD机试模拟题 用 C++ 实现 - 简易压缩算法(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明简易压缩算法题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...
MATLAB R2022b 安装教程
MATLAB R2022b 安装教程MathWorks 于2022年9月发布了 MATLAB 和 Simulink 产品系列的最新版本 Matlab R2022b版本 ,加入两个新产品: Medical Imaging Toolbox — 可视化、配准、分割和标注二维及三维医学图像Simscape Battery — 设计和仿真电池和储能系…...
PCI子系统
很多网络接口卡都是外围组件互联(Peripheral Compaonent Interconnect)设备,必须与Linux PCI子系统协同工作,并非所有的网络接口都是PCI设备,很多嵌入式设备的网络接口连接的就不是PCI总线,这些设备的初始化…...
Spring源码之IoC容器的Bean创建和依赖注入,DefaultListableBeanFactory容器为例
接上篇Spring源码之IoC容器初始化过程,以FileSystemXmlApplicationContext容器为例 因为FileSystemXmlApplicationContext使用的容器为DefaultListableBeanFactory,所以该篇基于DefaultListableBeanFactory的实现分析依赖注入过程。 目录获取Bean的总体流…...
解决小程序页面scroll-view块自身滑动问题
修改scroll-view的style样式 本来通过函数限制高度 style"margin-top:200rpx;"height: calc(100vh - 200rpx - env(safe-area-inset-bottom));会出现整个scroll-view块位置不固定滑动里面的内容后,自己本身在整个页面内上移,将样式改为&#…...
PowerCommand康明斯发电机控制屏维修HMI211
康明斯柴油发电机的监控系统分为普通机组控制屏和智能化机组控制界面。普通操作界面实用于普通的康明斯柴油发电机的控制,康明斯柴油发电机的起动与停止、供电与断电、状态调整等均由手动操作;自动化康明斯柴油发电机控制系统适合于智能化康明斯柴油发电…...
ELK + Kafka 测试
配置file beat输出到 Kafkalogstash服务器从kafka获取数据并输出到es集群在es集群上查看索引kibana界面添加索引查看数据1.配置file beat输出到 Kafka 1.1 Filebeat机器配置数据采集和输出目标 做好域名解析 # vim /usr/local/filebeat/filebeat.yml # 修改输出目标为kafka…...
迁移系统:换电脑或者硬盘转移磁盘文件的方法!
为什么要将操作系统迁移到新驱动? “将操作系统转移到新驱动您好,我刚刚为我的台式机订购了一个新的2TB希捷Barracuda硬盘,我想知道如何将我的Windows 10操作系统与我下载的其他一些软件一起转移过来。我使用新的/大的硬盘,然…...
职场性别报告,男女薪酬仍有差距,男性平均薪酬比女性高29.7%
性别是否影响职业?女性求职比男性更加困难?男性薪酬比女性更有优势?人们一说到警察、建筑师通常会想到高大魁梧的男性形象,一说到幼师、护士往往想到的都是温柔的女性形象,职业好似与性别挂钩;女性求职通常…...
5-Azidopentanoic acid,79583-98-5,5-Azidopentanoic COOH具有高效稳定,高特异性
5-Azidopentanoic acid,5-Azidopentanoic COOH,5-叠氮基戊酸产品规格:1.CAS号:79583-98-52.分子式:C5H9N3O23.分子量:143.074.包装规格:1g,5g,10g,包装灵活&a…...
滴滴前端高频react面试题汇总
说说 React组件开发中关于作用域的常见问题。 在 EMAScript5语法规范中,关于作用域的常见问题如下。 (1)在map等方法的回调函数中,要绑定作用域this(通过bind方法)。 (2)父组件传递…...
能在软路由docker给部署搭建teamsperk服务器么?并且设置好ddns
参考链接(4条消息) 【个人学习总结】使用docker搭建Teamspeak服务器_blcurtain的博客-CSDN博客_teamspeak3 docker(⊙﹏⊙)哎呀,崩溃啦! (tdeh.top)TeamSpeak服务器搭建与使用 - 缘梦の镇 (cmsboy.cn)Openwrt X86 docker运行甜糖-软路由,x86系统,openwrt…...
应用统计学实验1-蒙特卡罗方法求解定积分
目录 1. 用蒙特卡罗方法计算定积分(随机投点法) 2. 用蒙特卡罗方法计算定积分(平均值法)...
做b2b2c商城网站/百度电脑版网页
一、焦点在Button上时,防止按空格或回车键触发获得焦点的按钮的事件方法: Edit->Project Settings->Input->Axes->第二个Submit->清空Positive Button的默认内容:enter 以及清空 Alt Positive Button默认内容:space 注意引用问题,若找不到…...
网站付款接口这么做/北京seo公司
登录aptana官网: http://www.aptana.com/products/studio3/download 选择eclipse plugin version: 它不会提供一个下载链接,而是介绍在eclipse中如何安装: http://www.aptana.com/downloads/start Installing via Eclipse Pl…...
网站服务器自己做/南宁seo
启动 unity3d , 打开示例代码 file ---> build settings ... 对话框窗口。 scenes in build 中选择 car 的那个示例。 点击 build 按钮。 生成 *.apk 文件。 复制到安卓手机(测试过小米4,三星 s7 edge)上,并安装。 可以…...
网站建设都包括哪些方面/长沙做搜索引擎的公司
T1 一道图论神题(god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G{V,E},这张无向图有n个点m条边组成。并且这是一张带权图,只有点权。 LYK想把这个图删干净,它的方法是这样的。每次选择一个点,将它删掉&a…...
阿雷网站建设公司/百度数据平台
在前后端完全分离的情况下,Vue项目中实现token验证大致思路如下: 1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码 2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个…...
wordpress网站目录/今日军事新闻头条视频
GIT本地回退版本并且更新远程仓库 当不小心向远程仓库比如github做了一次错误的提交,想使本地和仓库回到某一个历史版本怎么办? 首先根据提交记录找到你想要回到的commit id(版本号) 然后回退到这个版本 git reset --hard 3628164…...