Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

write_* MergeTree 表设置

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

write_final_mark

类型
Bool
默认值
1

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

write_marks_for_substreams_in_compact_parts

类型
Bool
默认值
1
版本历史
版本默认值注释
25.81默认启用在 compact parts 中按子流写入标记
25.50新设置

启用后,在 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 写入一个标记,这意味着即使我们只需要某些子流的数据,也始终会从粒度中读取整列数据。

Navigation