clickhouse 唯一索引_ClickHouse及其MergeTree引擎

本文详细介绍了ClickHouse的MergeTree引擎,包括其创建方式、存储结构、数据分区、一级索引等关键特性,并讨论了ReplaceingMergeTree、SummingMergeTree、AggregatingMergeTree和CollapsingMergeTree等表引擎的处理逻辑。此外,还提及了ClickHouse的SQL语句查询方法,如with rollup、with cube和with totals。
摘要由CSDN通过智能技术生成

65b4b06cb5de23d897fc50ac05845fd6.png

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

OLAP场景的关键特征

OLAP(OnLine Analysis Processing ,联机分析处理),核心思想就是建立多维度的数据立方体,以维度(Dimension)和度量(Measure)为基本概念,辅以元数据,实现可以钻取、切片、切块、旋转等灵活、系统、直观的数据展现。

它的特征有:

  • 绝大多数是读请求 -数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
  • 已添加到数据库的数据不能修改。
  • 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
  • 宽表,即每个表包含着大量的列
  • 查询相对较少(通常每台服务器每秒查询数百次或更少)
  • 对于简单查询,允许延迟大约50毫秒
  • 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
  • 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
  • 事务不是必须的
  • 对数据一致性要求低
  • 每个查询有一个大表。除了他以外,其他的都很小。
  • 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中

ClickHouse不适用的场景

  • 不支持事务
  • 不擅长按照主键进行粒度的查询(虽然支持)
  • 不擅长按行删除数据(虽然支持)

ClickHouse的MergeTree引擎

MergeTree是ClickHouse最常用的表引擎,支持主键索引,数据分区,数据副本和数据采样等功能。

23f48839e26cca793c90fbb2b855b5df.png

MergeTree的创建方式和存储方式

MergeTree写入一批数据时,数据会以数据片段的的形式写入磁盘,并且数据片段不可修改。为了逼迫数据片段过多,ClickHouse会通过后台线程,定期合并这些数据片段。

MergeTree的创建方式

CREATE TABLE [IF NOT EXISTS] [db_name].table_name (

)ENGINE = MergeTree()
[PARTITION BY expr]
[ORDER BY expr]
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value,...]

(1)PARTITION BY[选填]: 分区键,用于指定表数据以何种形式进行分区。分区键支持:单个列字段,元组的形式使用多个列字段,列表达式。不声明的话,ClickHouse会生成一个all的分区。

(2)ORDER BY[必填]: 排序键,指定在一个数据片段内,数据以何种标准排序。默认情况下主键和排序键相同。

(3)PRIMARY KEY[选填]: 主键,主键字段生成一级索引,用于加上表查询。MergeTree运行重复数据(Re

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值