clickhouse数据存储

表由按主键排序的数据部分组成

  1.将数据插入表中时,会创建单独的数据部分,并且每个部分都按主键按字典顺序排序。例如,如果主键是(CounterID, Date),则部分中的数据按 排序CounterID,每个中的数据按CounterID排序Date

  2.属于不同分区的数据被分成不同的部分。ClickHouse 在后台合并数据部分以提高存储效率。属于不同分区的部分不会合并。合并机制不保证具有相同主键的所有行都在同一个数据部分中。

  3.数据部分可以存储WideCompact格式化。Wide格式中,每一列都存储在文件系统中的单独文件中,在Compact格式中,所有列都存储在一个文件中。Compact格式可用于提高小而频繁插入的性能。

  4.数据存储格式由表引擎的min_bytes_for_wide_part和设置控制。min_rows_for_wide_part如果数据部分中的字节数或行数少于相应设置的值,则该部分以Compact格式存储。否则以Wide格式存储。如果未设置这些设置,则数据部分以Wide格式存储。

  5.每个数据部分在逻辑上被划分为颗粒。颗粒是 ClickHouse 在选择数据时读取的最小的不可分割数据集。ClickHouse 不会拆分行或值,因此每个颗粒始终包含整数行。颗粒的第一行标有该行的主键值。对于每个数据部分,ClickHouse 创建一个存储标记的索引文件。对于每一列,无论是否在主键中,ClickHouse 也存储相同的标记。这些标记让您可以直接在列文件中查找数据。粒度大小受表引擎的index_granularity和设置限制。index_granularity_bytes颗粒中的行数位于[1, index_granularity]范围内,具体取决于行的大小。index_granularity_bytes如果单行的大小大于设置的值,则颗粒的大小可能会超出。在这种情况下,颗粒的大小等于行的大小。

posted @ 2022-03-17 14:29  渐逝的星光  阅读(836)  评论(0编辑  收藏  举报