Keypoint
- ClickHouse 索引与其他 RDMS 区别
- 稀疏主键索引及其构建
- ClickHouse 索引最佳实践
ClickHouse 的索引设计
Whole data: [---------------------------------------------]
CounterID: [aaaaaaaaaaaaaaaaaabbbbcdeeeeeeeeeeeeefgggggggghhhhhhhhhiiiiiiiiikllllllll]
Date: [1111111222222233331233211111222222333211111112122222223111112223311122333]
Marks: | | | | | | | | | | |
a,1 a,2 a,3 b,3 e,2 e,3 g,1 h,2 i,1 i,3 l,3
Marks numbers: 0 1 2 3 4 5 6 7 8 9 10
从文件目录看 ClickHouse 存储设计
/var/lib/clickhouse
- DataBase
- Table
- Parts all/Partition_key xxxx (分区键影响parts 数量)
- checksum.txt (例如因为同步导致all broken parts to remove错误)
- columns.txt (列及对应格式的数据)
- count.txt (当前数据块条数)
- default_compression_codec.txt(压缩格式,默认 LZ4)
- primary.idx 主键索引 (可以与 ORDER BY 不同)
- Column.bin(数据文件,压缩后可能是 1:6,2:7,3:4....,在 Compact 模式下,只有一个 bin)
- Column.mk2 (好像都一样大小,像是 Mark的缩写?)
从存储文件夹中可以看到,分级大概是
表 -> Parts -> 主键索引(idx)、

本文深入探讨ClickHouse的存储设计与索引机制,包括主键索引、Granule概念、Mark文件的作用等,揭示ClickHouse高效查询背后的秘密。
最低0.47元/天 解锁文章
1353





