adaptive_write_buffer_initial_size
add_implicit_sign_column_constraint_for_collapsing_engine
sign 列添加隐式约束,
仅允许使用有效值 (1 和 -1) 。
alter_column_secondary_index_mode
ALTER 命令,以及在允许时应采取的操作。默认情况下,此类 ALTER 命令是允许的,并且会重建相关索引。
可能的值:
rebuild(默认) :重建受ALTER命令中该列影响的所有次级索引。throw:通过抛出异常,阻止对受显式次级索引覆盖的列执行任何ALTER。隐式索引不受此限制影响,仍会被重建。drop:删除依赖的次级索引。新的 parts 将不再包含这些索引,需要使用MATERIALIZE INDEX重新创建。compatibility:与原始行为一致:对ALTER ... MODIFY COLUMN使用throw,对ALTER ... UPDATE/DELETE使用rebuild。ignore:仅供高级用户使用。它会使索引保持不一致状态,从而可能导致错误的查询结果。
apply_patches_on_merge
assign_part_uuids
auto_statistics_types
minmax 统计类型已弃用:它是 basic 的子集,应改用 basic。
background_task_preferred_step_execution_time_ms
clean_deleted_rows
clone_replica_zookeeper_create_get_part_batch_size
compatibility_allow_sampling_expression_not_in_primary_key
compute_exact_num_defaults_for_sparse_columns
optimize_trivial_count_with_sparsity_filter
需要此设置,因为它会使用持久化的 num_defaults 计数器 (Nullable 列
还需要设置 nullable_serialization_version = 'allow_sparse') 。
保持禁用可使插入/合并速度与之前一样快;启用后,
每个符合稀疏条件的列都会额外增加一次 O(rows) 扫描。
deduplicate_merge_projection_mode
ignore 选项纯粹是为了
兼容性,但可能会导致错误结果。否则,如果允许,
则在合并投影时需要执行什么操作:drop 还是 rebuild。因此,经典
MergeTree 会忽略此设置。它也会控制 OPTIMIZE DEDUPLICATE,
但对 MergeTree 家族的所有成员都生效。与
选项 lightweight_mutation_projection_mode 类似,它也是 分片 级别的。
可能的值:
ignorethrowdroprebuild
deduplication_hashes_cache_update_wait_ms
deduplication_hashes 缓存、确认是否存在已插入块之前,会等待其刷新到
更新的版本。该缓存镜像了 ClickHouse Keeper 中的
deduplication_hashes 目录,因此插入操作无需与
Keeper 往返通信即可检测重复项。
default_compression_codec
- 在表定义中为该列指定的压缩编解码器
- 在
default_compression_codec中定义的压缩编解码器 (此设置) - 在
compression设置中定义的默认压缩编解码器 默认值:空字符串 (未定义) 。
disk
dynamic_serialization_version
v1v2v3
enforce_index_structure_match_on_partition_manipulation
ATTACH/MOVE/REPLACE PARTITION) 的目标表启用了此设置,
则源表与目标表的索引和投影必须完全一致。否则,目标表可以拥有源表索引和投影的超集。
execute_merges_on_single_replica_time_threshold
- 任意正整数。
finished_mutations_to_keep
force_read_through_cache_for_merges
initialization_retry_period
kill_threads
lightweight_mutation_projection_mode
DELETE 不适用于带有投影的表。
这是因为投影中的行可能会受到 DELETE 操作的影响。
因此,默认值是 throw。不过,此选项可以改变这种行为。
当取值为 drop 或 rebuild 时,删除操作可与投影配合使用。
drop 会删除投影,因此当前查询可能会更快,因为投影会被删除;
但后续查询可能会变慢,因为不再有已附加的投影。rebuild 会重建
投影,这可能会影响当前查询的性能,但可能会加快后续查询。
这样做的一个好处是,这些选项只会在 分片 级别生效,这意味着未被触及的分片中的投影
会保持不变,而不会触发
drop 或 rebuild 之类的操作。
可选值:
throwdroprebuild
load_existing_rows_count_for_old_parts
truefalse
lock_acquire_timeout_for_background_operations
mutation_workload
workload 设置值使用。若未指定 (空字符串) ,则改用服务器设置 mutation_workload。
另请参见
non_replicated_deduplication_window
- 任意正整数。
0(禁用去重) 。
notify_newest_block_number
nullable_serialization_version
Nullable(T) 列使用的序列化方法。
可能的值:
-
basic — 对
Nullable(T)使用标准序列化。 -
allow_sparse — 允许
Nullable(T)使用稀疏编码。
object_serialization_version
v1v2v3
v3 版本支持更改共享数据序列化版本。
old_parts_lifetime
- 任意正整数。
old_parts_lifetime 秒后才删除它们。
如果非活跃 分片 当前未被查询使用,也就是该
分片 的 refcount 为 1,则会被移除。
新 分片 不会调用 fsync,因此在一段时间内,新 分片 只存在于
服务器的 RAM (操作系统缓存) 中。如果服务器意外重启,新
分片 可能会丢失或损坏。为保护数据,非活跃 分片 不会被立即删除。
启动期间,ClickHouse 会检查各个 分片 的完整性。如果合并后的
分片 已损坏,ClickHouse 会将非活跃 分片 恢复到活跃列表中,
随后再次对其进行合并。然后,损坏的 分片 会被重命名 (添加 broken_
前缀) 并移至 detached 文件夹中。如果合并后的 分片
没有损坏,则原始的非活跃 分片 会被重命名 (添加 ignored_
前缀) 并移至 detached 文件夹中。
默认的 dirty_expire_centisecs 值 (一个 Linux 内核设置) 是 30
秒 (已写入数据仅存储在 RAM 中的最长时间) ,但在
磁盘系统负载较高时,数据实际写入的时间可能会晚得多。根据实验结果,
old_parts_lifetime 选择了 480 秒,这段时间内可以保证
新的 分片 被写入磁盘。
optimize_row_order
DateTime64 类型时间戳列的主键) ,
预计无法从此设置中受益。
packed_skip_index_max_bytes
skp_idx_<name>.idx2 / .mrk2
文件,而是会打包到每个 分片 的单个 skp_idx.packed
归档中。超过该值的子流则保留旧版的逐文件布局。该决定会在写入时按子流独立
作出,因此单个 分片 可以同时包含已打包的小索引
(例如 minmax) 以及仍按文件单独存放的大索引 (例如较重的 bloom_filter) 。设为 0
可完全禁用打包 (默认值) 。
每个 skip-index 子流实际上都由一个数据文件和一个标记文件组成;在作出是否
落盘的决定之前,这两个文件都会先在内存中缓冲直到达到该阈值。因此,写入时的峰值内存占用
会随 2 * packed_skip_index_max_bytes * (number of substreams that stay below the threshold) 成比例增长。
此设置不支持全文索引,因此全文索引永远不会被打包。
当表上定义了许多 skip 索引时 (例如
使用 add_minmax_index_for_numeric_columns) ,打包可以减少 inode 压力。
该磁盘格式是自描述的:读取器会检测 skp_idx.packed,并透明地从中读取已打包的
子流。更改此设置只会影响新写入的 分片;
现有 分片 会保留其写入时所使用的布局。
part_minmax_index_columns
partition_key_only— 仅跟踪分区键列。with_block_number_offset— 分区键列,以及持久化的_block_number和_block_offset虚拟列。启用基于这些列的分片级裁剪。
propagate_types_serialization_versions_to_nested_types
ratio_of_defaults_for_sparse_serialization
ratio_of_defaults_for_sparse_serialization
设置为小于 1.0。如果该值大于或等于 1.0,
则这些列始终会使用常规的完整序列化进行写入。
可能的值:
- 介于
0和1之间的 Float,用于启用稀疏序列化 - 如果不想使用稀疏序列化,则设为
1.0(或更大)
s 列在 95% 的
行中都为空字符串。在 my_regular_table 中,我们不使用稀疏序列化;而在
my_sparse_table 中,我们将 ratio_of_defaults_for_sparse_serialization 设置为
0.95:
my_sparse_table 中的 s 列占用的磁盘存储空间更少:
system.parts_columns 表中的 serialization_kind 列,
确认某一列是否使用了稀疏编码:
s 中哪些部分是通过稀疏序列化存储的:
reduce_blocking_parts_sleep_ms
replace_long_file_name_to_hash
replicated_can_become_leader
truefalse
search_orphaned_parts_disks
- any - 不限制范围。
- local - 范围仅限于本地磁盘。
- none - 范围为空,不搜索
serialization_info_version
serialization.json 时使用的序列化信息版本。
此设置是在集群升级期间保持兼容性所必需的。
可选值:
basic- 基础格式。with_types- 包含额外types_serialization_versions字段的格式,允许按类型指定序列化版本。 这会使string_serialization_version之类的设置生效。
basic,以便新服务器生成
与旧服务器兼容的数据分片。升级完成后,
切换为 WITH_TYPES 以启用按类型的序列化版本。
启用时 (默认) ,名称中带点且共享相同前缀的 Array 列 (例如 n.a 和 n.b)
会被视为 Nested 结构的一部分:它们在磁盘上共享同一个偏移文件 (例如 n.size0) ,
并且在 INSERT 时会校验它们的数组大小是否相同。
禁用时,每个 Array 列都会拥有各自独立的偏移文件,带点名称不再具有特殊
语义,而且标量列可以与共享相同前缀、名称中带点的 Array 列共存
(例如 n UInt32 与 n.a Array(String) 同时存在) 。此设置在创建表后不可更改。
simultaneous_parts_removal_limit
simultaneous_parts_removal_limit 个过期parts。
将 simultaneous_parts_removal_limit 设置为 0 表示不受限制。
storage_policy
string_serialization_version
String 列的序列化格式。
此设置仅在 serialization_info_version 设置为 “with_types” 时生效。
当设置为 with_size_stream 时,顶层 String 列会通过单独的
.size 子列存储字符串长度,而不是内联存储。这样可以支持真正的 .size
子列,并提升压缩效率。
嵌套的 String 类型 (例如位于 Nullable、LowCardinality、Array 或 Map 中)
不会受此影响,但出现在 Tuple 中时除外。
可能的值:
single_stream— 使用带内联大小信息的标准序列化格式。with_size_stream— 为顶层String列使用单独的大小流。
temporary_directories_lifetime
try_fetch_recompressed_part_timeout
- 任意正整数。
ttl_only_drop_parts
TTL 设置过期时,是否直接删除整个数据parts。
当 ttl_only_drop_parts 被禁用时 (默认) ,只会移除那些
已根据其 TTL 设置过期的行。
当 ttl_only_drop_parts 被启用时,如果某个数据parts内的所有
行都已根据其 TTL 设置过期,则会删除整个数据parts。
wait_for_unique_parts_send_before_shutdown_ms
zookeeper_session_expiration_check_period
- 任意正整数。