Skip to main content
这些设置可在 system.merge_tree_settings 中查看,且由 ClickHouse 源代码自动生成。

write_final_mark

已废弃设置,不起任何作用。

write_marks_for_substreams_in_compact_parts

启用后,在 Compact parts 中将按每个子流而不是按每一列写入标记。 这样便可以高效地从数据分区片段中读取单独的子列。 例如,列 t Tuple(a String, b UInt32, c Array(Nullable(UInt32))) 会被序列化为以下子流:
  • t.a 表示 tuple 元素 a 的 String 数据
  • t.b 表示 tuple 元素 b 的 UInt32 数据
  • t.c.size0 表示 tuple 元素 c 的数组大小
  • t.c.null 表示 tuple 元素 c 中嵌套数组元素的 null map
  • t.c 表示 tuple 元素 c 中嵌套数组元素的 UInt32 数据
启用此设置后,我们会为这 5 个子流分别写入一个标记,这意味着在需要时,可以分别从粒度中读取每个子流的 数据。例如,如果我们想读取子列 t.c,则只会读取 子流 t.c.size0t.c.nullt.c 的数据,而不会读取子流 t.at.b 的数据。禁用此设置时, 我们只会为顶层列 t 写入一个标记,这意味着即使我们只需要某些子流的数据,也始终会从粒度中读取整列数据。
最后修改于 2026年7月23日