clickhouse 索引_【ClickHouse内核】对于分区、索引、标记和压缩数据的协同工作

本文深入探讨ClickHouse数据库的分区、索引、数据标记和压缩的协同工作原理。从数据写入和查询过程,阐述如何通过这些组件实现高效的查询性能。重点分析了标记与压缩数据块的一对一、一对多和多对一的对应关系,揭示ClickHouse的高性能秘诀。
摘要由CSDN通过智能技术生成

“ 摘要: 本文主要讲述ClickHouse开源数据库对于分区、索引、标记和压缩数据的协同工作相关知识点。主要内容如下:

  • 概述

  • 写入过程

  • 查询过程

  • 数据标记与压缩数据块的对应关系

  • 结论

01

概述

分区、索引、标记和压缩数据,这些组件配合在一起给ClickHouse数据库带来非常高效的查询性能。前面的文章也单独介绍了这几个组件。接下来,就分别从写入过程、查询过程,以及数据标记与压缩数据块的三种对应关系的角度展开介绍。

02

写入过程

生成分区目录

数据写入的第一步是生成分区目录,伴随着每一批数据的写入,都会生成一个新的分区目录。在后续的某一时刻,属于相同分区的目录会依照规则合并到一起。

生成索引

按照index_granularity索引粒度,会分别生成primary.idx主键索引(如果声明了二级索引,还会创建二级索引文件)。

生成标记和数据压缩文件

按照index_granularity索引粒度,分别生成每一个列字段的.mrk数据标记和.bin压缩数据文件。

各个底层物理文件生成的过程

下图所示是一张MergeTree表在写入数据时,它的分区目录、索引、标记和压缩数据的生成过程。

43de8767cfe5d044c5df7124572ef0ef.png

从分区目录201403_1_34_3能够得知,该分区数据共分34次写入,期间发生过3次合并。在数据写入的过程中,依据index_granularity的粒度,依次为每个区间的数据生成索引、标记和压缩数据块。其中,索引和标记区间是对齐的,而标记与压缩块则根据区间数据大小的不同,会生成多对一、一对一和一对多三种关系。

03

查询过程

借助索引文件降低扫描范围

数据查询的本质,可以看作一个不断减小数据范围的过程。在最理想的情况下&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值