1.表由按主键排序的数据片段(DATA PART)组成。
当数据被插入到表中时,会创建多个数据片段并按主键的字典序排序。
2.clickhouse会通过后台线程定期合并相同分区的数据片段。
合并机制并不保证具有相同主键的行全都合并到同一个数据片段中。
optimize table mytest.test_mergetree
3.每个数据片段被逻辑的分割成颗粒(granules)。颗粒是 ClickHouse 中进行数据查询时的最小不可分割数据集。ClickHouse 不会对行或值进行拆分,所以每个颗粒总是包含整数个行。每个颗粒的第一行通过该行的主键值进行标记, ClickHouse 会为每个数据片段创建一个索引文件来存储这些标记。对于每列,无论它是否包含在主键当中,ClickHouse 都会存储类似标记。这些标记让您可以在列文件中直接找到数据。
4.一张 MergeTree 数据表在磁盘上的物理结构分为三个层级,依次是数据表目录、分区目录、以及各分区目录下的数据文件。
分区目录的命名规则是:PartitionID_MinBlockNum_MaxBlockNum_Level