跳到主要内容
跳到主要内容

MergeTree 表设置

System table system.merge_tree_settings 显示全局设置的 MergeTree 设置。

可以在服务器配置文件的 merge_tree 部分设置 MergeTree 设置,或者在 CREATE TABLE 语句的 SETTINGS 子句中为每个 MergeTree 表单独指定。

自定义设置 max_suspicious_broken_parts 的示例:

在服务器配置文件中配置所有 MergeTree 表的默认值:

为特定表设置:

使用 ALTER TABLE ... MODIFY SETTING 更改特定表的设置:

MergeTree 设置

adaptive_write_buffer_initial_size

自适应写缓冲区的初始大小

add_implicit_sign_column_constraint_for_collapsing_engine

如果为 true,将为 CollapsingMergeTree 或 VersionedCollapsingMergeTree 表的 sign 列添加隐式约束,仅允许有效值(1-1)。

add_minmax_index_for_numeric_columns

启用后,为表中的所有数值列添加最小最大(跳过)索引。

add_minmax_index_for_string_columns

启用后,为表中的所有字符串列添加最小最大(跳过)索引。

allow_experimental_replacing_merge_with_cleanup

Experimental feature. Learn more.

允许对 ReplacingMergeTree 使用实验性的 CLEANUP 合并,该合并包含 is_deleted 列。启用时,允许使用 OPTIMIZE ... FINAL CLEANUP 手动将分区中的所有部分合并为一个部分,并删除任何已删除的行。

还允许启用此类合并在后台自动发生,使用设置 min_age_to_force_merge_secondsmin_age_to_force_merge_on_partition_onlyenable_replacing_merge_with_cleanup_for_min_age_to_force_merge

allow_experimental_reverse_key

Experimental feature. Learn more.

启用对 MergeTree 排序键的降序排序支持。此设置对于时间序列分析和前 N 查询特别有用,允许数据以反时间顺序存储,以优化查询性能。

启用 allow_experimental_reverse_key 后,您可以在 MergeTree 表的 ORDER BY 子句中定义降序排序。这使得对于降序查询,可以使用更有效的 ReadInOrder 优化,而不是 ReadInReverseOrder

示例

通过在查询中使用 ORDER BY time DESC,应用 ReadInOrder

默认值: false

allow_floating_point_partition_key

启用允许使用浮点数作为分区键。

可能的值:

  • 0 — 不允许浮点分区键。
  • 1 — 允许浮点分区键。

allow_nullable_key

允许 Nullable 类型作为主键。

allow_reduce_blocking_parts_task

减少共享合并树表的阻塞部分的后台任务。 仅在 ClickHouse Cloud 中可用。

allow_remote_fs_zero_copy_replication

Beta feature. Learn more.

在生产环境中不要使用此设置,因为它尚未准备好。

allow_summing_columns_in_partition_or_order_key

启用后,允许在 SummingMergeTree 表中使用求和列作为分区或排序键。

allow_suspicious_indices

拒绝具有相同表达式的主/次索引和排序键。

allow_vertical_merges_from_compact_to_wide_parts

允许从紧凑部分到宽部分的垂直合并。该设置必须在所有副本上具有相同的值。

always_fetch_merged_part

如果为 true,此副本从不合并部分,并始终从其他副本下载合并部分。

可能的值:

  • true, false

在突变/替换/分离等操作中始终复制数据,而不是使用硬链接。

apply_patches_on_merge

如果为 true,则在合并时应用补丁部分。

assign_part_uuids

启用时,将为每个新部分分配一个唯一的部分标识符。 在启用之前,请检查所有副本是否支持 UUID 版本 4。

async_block_ids_cache_update_wait_ms

每次插入迭代等待 async_block_ids_cache 更新的时间。

async_insert

如果为 true,INSERT 查询中的数据将存储在队列中,并在后台后期刷新到表中。

background_task_preferred_step_execution_time_ms

合并或突变的一个步骤的目标执行时间。如果一个步骤需要更长时间,可以超过此限制。

cache_populated_by_fetch

备注

此设置仅适用于 ClickHouse Cloud。

cache_populated_by_fetch 被禁用(默认设置)时,只有在运行需要这些部分的查询时,新的数据部分才会加载到缓存中。

启用后,cache_populated_by_fetch 将导致所有节点从存储加载新数据部分到其缓存中,而无需查询来触发此操作。

另请参见

check_delay_period

过时设置,不执行任何操作。

check_sample_column_is_correct

在创建表时启用检查,确保采样列的数据类型或采样表达式是正确的。数据类型必须是无符号的 整数类型: UInt8UInt16UInt32UInt64

可能的值:

  • true — 启用检查。
  • false — 在创建表时禁用检查。

默认值:true

默认情况下,ClickHouse 服务器在创建表时检查采样列或采样表达式的数据类型。如果您已经有 таблиц с не правильным sampling expression,并且不希望服务器在启动时引发异常,请将 check_sample_column_is_correct 设置为 false

clean_deleted_rows

过时设置,不执行任何操作。

cleanup_delay_period

清理旧队列日志、块哈希和部分的最短时间。

cleanup_delay_period_random_add

从 0 到 x 秒随机均匀分布的值添加到 cleanup_delay_period 以避免因表数量非常大而导致的涌现效应和随后 ZooKeeper 的拒绝服务。

cleanup_thread_preferred_points_per_iteration

后台清理的建议批处理大小(点是抽象的,但 1 点大约相当于 1 个插入块)。

cleanup_threads

用于清理过时线程的线程。仅在 ClickHouse Cloud 中可用。

columns_and_secondary_indices_sizes_lazy_calculation

在第一次请求时惰性计算列和二级索引的大小,而不是在表初始化时。

columns_to_prewarm_mark_cache

需要预热标记缓存的列列表(如果启用)。为空表示所有列。

compact_parts_max_bytes_to_buffer

仅在 ClickHouse Cloud 中可用。紧凑部分中单个条带中写入的最大字节数。

compact_parts_max_granules_to_buffer

仅在 ClickHouse Cloud 中可用。紧凑部分中单个条带中写入的最大粒度数。

compact_parts_merge_max_bytes_to_prefetch_part

仅在 ClickHouse Cloud 中可用。合并期间完全读取到内存的紧凑部分的最大大小。

compatibility_allow_sampling_expression_not_in_primary_key

允许创建包含未在主键中的采样表达式的表。这仅在临时允许服务器使用错误表以实现向后兼容性时需要。

compress_marks

标记支持压缩,减少标记文件大小并加快网络传输速度。

compress_primary_key

主键支持压缩,减少主键文件大小并加快网络传输速度。

concurrent_part_removal_threshold

仅在 inactive data parts 的数量至少达到此阈值时,激活并发部分移除(请参见 max_part_removal_threads)。

deduplicate_merge_projection_mode

是否允许为非经典 MergeTree 表(即不为 (Replicated, Shared) MergeTree 的表)创建投影。忽略选项纯粹出于兼容性,这可能导致不正确的答案。否则,如果允许,则在合并投影时,执行的操作是丢弃或重建。因此经典 MergeTree 会忽略此设置。它也控制 OPTIMIZE DEDUPLICATE,但对所有 MergeTree 家族成员都有效。类似选项 lightweight_mutation_projection_mode,它也是分级的。

可能的值:

  • ignore
  • throw
  • drop
  • rebuild

default_compression_codec

指定在表声明中未定义的情况下使用的默认压缩编解码器。 列的压缩编解码器选择顺序:

  1. 表声明中为列定义的压缩编解码器
  2. default_compression_codec(此设置)中定义的压缩编解码器
  3. compression 设置中定义的默认压缩编解码器 默认值:空字符串(未定义)。

detach_not_byte_identical_parts

在合并或突变后,使能或禁用在副本上分离数据部分(如果其与其他副本上的数据部分不完全相同)。如果禁用,则删除数据部分。如果您希望稍后分析这些部分,请激活此设置。

此设置适用于启用 数据复制MergeTree 表。

可能的值:

  • 0 — 部分被删除。
  • 1 — 部分被分离。

detach_old_local_parts_when_cloning_replica

在修复丢失副本时,不移除旧的本地部分。

可能的值:

  • true
  • false

disable_detach_partition_for_zero_copy_replication

禁用零拷贝复制的 DETACH PARTITION 查询。

disable_fetch_partition_for_zero_copy_replication

禁用零拷贝复制的 FETCH PARTITION 查询。

disable_freeze_partition_for_zero_copy_replication

禁用零拷贝复制的 FREEZE PARTITION 查询。

disk

存储磁盘的名称。可以替代存储策略指定。

enable_block_number_column

启用为每一行持久化列 _block_number。

enable_block_offset_column

在合并时持久化虚拟列 _block_number

enable_index_granularity_compression

在内存中压缩索引粒度的值(如果可能)。

enable_max_bytes_limit_for_min_age_to_force_merge

如果设置 min_age_to_force_merge_secondsmin_age_to_force_merge_on_partition_only 应该尊重设置 max_bytes_to_merge_at_max_space_in_pool

可能的值:

  • true
  • false

enable_mixed_granularity_parts

启用或禁用使用 index_granularity_bytes 设置来控制粒度大小的过渡。在版本 19.11 之前,只有 index_granularity 设置用于限制粒度大小。index_granularity_bytes 设置提高了 ClickHouse 从大行(数十和数百兆字节)表中选择数据时的性能。如果您的表具有大的行,您可以启用此设置以提高 SELECT 查询的效率。

enable_replacing_merge_with_cleanup_for_min_age_to_force_merge

Experimental feature. Learn more.

在分区合并为单个部分时,是否使用 CLEANUP 合并来处理 ReplacingMergeTree。这要求启用 allow_experimental_replacing_merge_with_cleanupmin_age_to_force_merge_secondsmin_age_to_force_merge_on_partition_only

可能的值:

  • true
  • false

enable_the_endpoint_id_with_zookeeper_name_prefix

启用用于复制合并树表的以 zookeeper 名称前缀的端点 ID。

enable_vertical_merge_algorithm

启用使用垂直合并算法。

enforce_index_structure_match_on_partition_manipulation

如果在分区操作查询(ATTACH/MOVE/REPLACE PARTITION)的目标表上启用此设置,则源表和目标表之间的索引和投影必须完全相同。否则,目标表可以包含源表索引和投影的超集。

exclude_deleted_rows_for_part_size_in_merge

如果启用,合并部分时将估算实际数据部分大小(即排除通过 DELETE FROM 删除的行)。请注意,此行为仅在启用此设置后对受 DELETE FROM 影响的数据部分触发。

可能的值:

  • true
  • false

另请参见

execute_merges_on_single_replica_time_threshold

当此设置的值大于零时,只有一个副本会立即开始合并,而其他副本会等待最多该时间来下载结果,而不是在本地进行合并。如果所选副本没有在该时间内完成合并,将回退到标准行为。

可能的值:

  • 任何正整数。

fault_probability_after_part_commit

用于测试。请勿更改。

fault_probability_before_part_commit

用于测试。请勿更改。

finished_mutations_to_keep

保留的已完成变更记录。如果为零,则保留所有记录。

force_read_through_cache_for_merges

Experimental feature. Learn more.

强制在合并时通过文件系统缓存读取。

fsync_after_insert

对每个插入的部分执行 fsync。显著降低插入性能,不建议与宽部分一起使用。

fsync_part_directory

在所有部分操作(写入、重命名等)后对部分目录执行 fsync。

in_memory_parts_enable_wal

过时设置,不执行任何操作。

in_memory_parts_insert_sync

过时设置,不执行任何操作。

inactive_parts_to_delay_insert

如果表中单个分区中的非活动部分数量超出 inactive_parts_to_delay_insert 值,则 INSERT 将被人工延迟。

提示

当服务器无法足够快地清理部分时,这很有用。

可能的值:

  • 任何正整数。

inactive_parts_to_throw_insert

如果单个分区中的非活动部分数量超过 inactive_parts_to_throw_insert 值,则 INSERT 将中断并出现以下错误:

"非活动部分太多(N)。清理部分的处理速度明显慢于插入" 异常。

可能的值:

  • 任何正整数。

index_granularity

索引的标记间的最大数据行数。即多少行对应一个主键值。

index_granularity_bytes

数据粒度的最大字节数。

若要通过行数限制粒度大小,请设置为 0(不推荐)。

initialization_retry_period

表初始化的重试周期(以秒为单位)。

kill_delay_period

过时设置,不执行任何操作。

kill_delay_period_random_add

过时设置,不执行任何操作。

kill_threads

过时设置,不执行任何操作。

lightweight_mutation_projection_mode

默认情况下,轻量级删除 DELETE 不适用于具有投影的表。这是因为投影中的行可能会受到 DELETE 操作的影响。因此默认值为 throw。然而,此选项可以更改行为。使用值 droprebuild,删除将适用于投影。drop 将删除投影,因此在当前查询中可能会很快,但在未来的查询中可能较慢,因为没有附加投影。rebuild 将重建投影,这可能影响当前查询的性能,但对未来的查询可能加快。同时,值得注意的是,这些选项仅适用于部分级别,这意味着未被触及的部分中的投影将保持不变,而不会触发任何操作,如删除或重建。

可能的值:

  • throw
  • drop
  • rebuild

load_existing_rows_count_for_old_parts

如果启用,并且与 exclude_deleted_rows_for_part_size_in_merge 一起,已删除的现有数据部分的行数将在表启动期间计算。请注意,这可能会减慢启动表的加载时间。

可能的值:

  • true
  • false

另请参见

lock_acquire_timeout_for_background_operations

对于后台操作,如合并、突变等。失败以获取表锁的时间(秒)。

marks_compress_block_size

标记压缩块大小,即要压缩的块的实际大小。

marks_compression_codec

标记使用的压缩编码,标记足够小且已缓存,因此默认压缩为 ZSTD(3)。

materialize_skip_indexes_on_merge

启用时,合并将构建和存储跳过索引的新部分。 否则,可以通过显式的 MATERIALIZE INDEX 创建/存储。

materialize_ttl_recalculate_only

仅在 MATERIALIZE TTL 时重新计算 TTL 信息。

max_avg_part_size_for_too_many_parts

根据 parts_to_delay_insertparts_to_throw_insert 的检查将仅在相关分区的平均部分大小不大于指定阈值时激活。如果大于指定阈值,则不会延迟或拒绝 INSERT。这允许在单个服务器上拥有数百 TB 的单个表,如果部分成功合并为较大的部分。这样不会影响非活动部分或总部分的阈值。

max_bytes_to_merge_at_max_space_in_pool

可以合并为一个部分的最大总部分大小(以字节为单位),如果有足够的资源可用。大致与由自动后台合并创建的最大可能部分大小相对应。(0 表示将禁用合并)

可能的值:

  • 任何非负整数。

合并调度器定期分析分区中的部分大小和数量,如果池中有足够的免费资源,它会启动后台合并。当源部分的总大小大于 max_bytes_to_merge_at_max_space_in_pool 时,合并就会发生。

OPTIMIZE FINAL 启动的合并将忽略 max_bytes_to_merge_at_max_space_in_pool(仅考虑可用的磁盘空间)。

max_bytes_to_merge_at_min_space_in_pool

以可用资源最少的后台池合并为一个部分时的最大总部分大小(以字节为单位)。

可能的值:

  • 任何正整数。

max_bytes_to_merge_at_min_space_in_pool 定义可以合并的最大总大小,尽管缺少可用磁盘空间(在池中)。这是为了减少小部分的数量以及避免 “非活动部分太多” 错误。 合并会通过将所有合并部分大小加倍来预定磁盘空间。 因此,在可用磁盘空间较少的情况下,可能会出现这样的情况,即存在空闲空间,但此空间已被正在进行的大型合并预定,因此其他合并无法启动,非活动部分的数量随着每次插入而增加。

max_cleanup_delay_period

清理旧队列日志、块哈希和部分的最长时间。

max_compress_block_size

在写入表之前压缩未压缩数据块的最大大小。您还可以在全局设置中指定此设置(请参见 max_compress_block_size 设置)。创建表时指定的值会覆盖此设置的全局值。

max_concurrent_queries

与 MergeTree 表相关的最大并发执行查询数量。 查询仍将受到其他 max_concurrent_queries 设置的限制。

可能的值:

  • 正整数。
  • 0 — 没有限制。

默认值:0(无限制)。

示例

max_delay_to_insert

用于计算 INSERT 延迟的秒数,如果单个分区中的活动部分数量超过 parts_to_delay_insert 值。

可能的值:

  • 任何正整数。

INSERT 的延迟(以毫秒为单位)通过以下公式计算:

例如,如果分区有 299 个活动部分,且 parts_to_throw_insert = 300,parts_to_delay_insert = 150,max_delay_to_insert = 1,则 INSERT 延迟 pow( 1 * 1000, (1 + 299 - 150) / (300 - 150) ) = 1000 毫秒。

从版本 23.1 开始,公式已更改为:

例如,如果分区中有 224 个活动部分,且 parts_to_throw_insert = 300,parts_to_delay_insert = 150,max_delay_to_insert = 1,min_delay_to_insert_ms = 10,则 INSERT 延迟为 max( 10, 1 * 1000 * (224 - 150 + 1) / (300 - 150) ) = 500 毫秒。

max_delay_to_mutate_ms

如果有大量未完成的突变,合并树表的最大突变延迟(毫秒)。

max_digestion_size_per_segment

每个段最大消化字节数,以构建 GIN 索引。

max_file_name_length

文件名的最大长度,以保持其原样而不进行哈希。仅在启用设置 replace_long_file_name_to_hash 时生效。 此设置的值不包括文件扩展名的长度。因此,建议将其设置为低于最大文件名长度(通常为 255 字节),并留有一些空间,以避免文件系统错误。

max_files_to_modify_in_alter_columns

如果要修改文件(删除、添加)的数量大于此设置,则不应用 ALTER。

可能的值:

  • 任何正整数。

默认值:75

max_files_to_remove_in_alter_columns

如果要删除的文件数量大于此设置,则不应用 ALTER。

可能的值:

  • 任何正整数。

max_merge_delayed_streams_for_parallel_write

可以并行冲刷的最大流(列)数量(合并的 max_insert_delayed_streams_for_parallel_write 的类比)。仅对垂直合并有效。

max_merge_selecting_sleep_ms

在没有选择到合并的部分后,重新尝试选择部分的最大等待时间。在大型集群中,较低的设置将频繁触发后台调度池中的选择任务,这会导致对 ZooKeeper 发出大量请求。

max_number_of_merges_with_ttl_in_pool

当池中合并带有 TTL 条目的数量超过指定数量时,不要为新的带有 TTL 的合并分配新的合并。这是为了为常规合并留出空闲线程,避免 "非活动部分太多" 错误。

max_number_of_mutations_for_replica

限制每个副本的部分变更数为指定数目。零表示每个副本的变更数量没有限制(执行仍然会受到其他设置的约束)。

max_part_loading_threads

过时设置,不执行任何操作。

max_part_removal_threads

过时设置,不执行任何操作。

max_partitions_to_read

限制一次查询中可以访问的最大分区数量。

在创建表时指定的设置值可以通过查询级别的设置进行覆盖。

可能的值:

  • 任何正整数。

您还可以在查询/会话/配置文件级别指定查询复杂度设置 max_partitions_to_read

max_parts_in_total

如果表中所有分区中的活动部分总数超过 max_parts_in_total 值,则 INSERT 被中断并抛出 Too many parts (N) 异常。

可能的值:

  • 任何正整数。

表中大量部分会降低 ClickHouse 查询性能,并增加 ClickHouse 启动时间。通常这是由于错误设计导致的(选择分区策略时的错误 - 分区过小)。

max_parts_to_merge_at_once

可以一次合并的最大部分量(0 - 禁用)。不影响 OPTIMIZE FINAL 查询。

max_postpone_time_for_failed_mutations_ms

对失败突变的最大推迟时间。

max_postpone_time_for_failed_replicated_fetches_ms

对失败的复制提取的最大推迟时间。

max_postpone_time_for_failed_replicated_merges_ms

对失败的复制合并的最大推迟时间。

max_postpone_time_for_failed_replicated_tasks_ms

对失败的复制任务的最大推迟时间。该值在任务不是提取、合并或突变时使用。

max_projections

合并树投影的最大数量。

max_replicated_fetches_network_bandwidth

限制从网络以字节每秒的速度进行数据交换的最大速度,用于 replicated 获取。这一设置适用于特定的表,不同于max_replicated_fetches_network_bandwidth_for_server设置,该设置适用于服务器。

您可以限制服务器的网络和特定表的网络,但为此表级设置的值应小于服务器级的值。否则,服务器仅考虑max_replicated_fetches_network_bandwidth_for_server设置。

该设置不能严格执行。

可能的值:

  • 正整数。
  • 0 — 无限。

默认值:0

使用

可用于在复制数据以添加或替换新节点时限速。

max_replicated_logs_to_keep

在 ClickHouse Keeper 日志中可以包含多少条记录,如果有非活动副本。当超过该数量时,非活动副本将变得丢失。

可能的值:

  • 任何正整数。

max_replicated_merges_in_queue

在 ReplicatedMergeTree 队列中允许同时合并和变更操作的任务数量。

max_replicated_merges_with_ttl_in_queue

在 ReplicatedMergeTree 队列中允许同时进行的带有 TTL 的合并任务数量。

max_replicated_mutations_in_queue

在 ReplicatedMergeTree 队列中允许同时进行的变更部分的任务数量。

max_replicated_sends_network_bandwidth

限制从网络以字节每秒的速度进行数据交换的最大速度,用于 replicated 发送。该设置适用于特定的表,不同于max_replicated_sends_network_bandwidth_for_server设置,该设置适用于服务器。

您可以限制服务器的网络和特定表的网络,但为此表级设置的值应小于服务器级的值。否则,服务器仅考虑max_replicated_sends_network_bandwidth_for_server设置。

该设置不能严格执行。

可能的值:

  • 正整数。
  • 0 — 无限。

使用

可用于在复制数据以添加或替换新节点时限速。

max_suspicious_broken_parts

如果单个分区中损坏部分的数量超过 max_suspicious_broken_parts 值,则不允许自动删除。

可能的值:

  • 任何正整数。

max_suspicious_broken_parts_bytes

所有损坏部分的最大大小,如果更多,则拒绝自动删除。

可能的值:

  • 任何正整数。

merge_max_block_size

从合并的部分中读取到内存中的行数量。

可能的值:

  • 任何正整数。

合并操作从部分中以 merge_max_block_size 行的块读取行,然后进行合并并将结果写入新部分。读取的块放在内存中,因此merge_max_block_size 影响合并所需的内存大小。因此,对于行非常宽的表,合并可能会消耗大量的内存(如果平均行大小为 100kb,那么在合并 10 个部分时,(100kb * 10 * 8192) ≈ 8GB 的内存)。通过减少 merge_max_block_size,您可以减少合并所需的内存,但会减慢合并速度。

merge_max_block_size_bytes

合并操作应该形成的块的字节数。默认为与 index_granularity_bytes 相同的值。

merge_max_bytes_to_prewarm_cache

仅在 ClickHouse Cloud 中可用。合并时预热缓存的部分(紧凑或打包)的最大大小。

merge_selecting_sleep_ms

在没有选择到任何部分后,尝试再次选择要合并的部分前的最小等待时间。较低的设置将导致在大规模集群中频繁触发后台选择任务,造成大量请求到 zookeeper。

merge_selecting_sleep_slowdown_factor

当没有内容可合并时,合并选择任务的睡眠时间乘以此因子,而当分配了合并时进行除以此因子。

merge_selector_algorithm

Experimental feature. Learn more.

选择用于分配合并的部分的算法。

merge_selector_base

影响分配的合并的写放大(专家级设置,若您不理解其作用,请勿更改)。适用于 Simple 和 StochasticSimple 合并选择器。

merge_selector_blurry_base_scale_factor

控制逻辑启动的距离分区中的部分数量。因子越大,反应越迟钝。

merge_selector_enable_heuristic_to_remove_small_parts_at_right

启用合并选择部分的启发式,当从右侧范围移除部分时,如果其大小小于指定比例(0.01)之和。适用于 Simple 和 StochasticSimple 合并选择器。

merge_selector_window_size

一次查看多少部分。

merge_total_max_bytes_to_prewarm_cache

仅在 ClickHouse Cloud 中可用。合并时用于预热缓存的部分的最大总大小。

merge_tree_clear_old_broken_detached_parts_ttl_timeout_seconds

过时设置,无效。

merge_tree_clear_old_parts_interval_seconds

设置 ClickHouse 执行旧部分、WAL 和变更清理的间隔(以秒为单位)。

可能的值:

  • 任何正整数。

merge_tree_clear_old_temporary_directories_interval_seconds

设置 ClickHouse 执行旧临时目录清理的间隔(以秒为单位)。

可能的值:

  • 任何正整数。

merge_tree_enable_clear_old_broken_detached

过时设置,无效。

merge_with_recompression_ttl_timeout

重复具有重新压缩 TTL 的合并前的最小延迟(以秒为单位)。

merge_with_ttl_timeout

重复具有删除 TTL 的合并前的最小延迟(以秒为单位)。

merge_workload

用于调节在合并与其他工作负载之间如何利用和共享资源。指定的值用作该表的后台合并的 workload 设置值。如果未指定(空字符串),则使用服务器设置 merge_workload

另请参见

min_absolute_delay_to_close

关闭的最小绝对延迟,停止服务请求,并在状态检查时不返回 Ok。

min_age_to_force_merge_on_partition_only

指示 min_age_to_force_merge_seconds 是否仅应适用于整个分区,而不是子集。

默认情况下,忽略设置 max_bytes_to_merge_at_max_space_in_pool(请参见enable_max_bytes_limit_for_min_age_to_force_merge)。

可能的值:

  • true, false

min_age_to_force_merge_seconds

如果范围内的每个部分的年代都在 min_age_to_force_merge_seconds 的值之前,则合并部分。

默认情况下,忽略设置 max_bytes_to_merge_at_max_space_in_pool (请参见 enable_max_bytes_limit_for_min_age_to_force_merge)。

可能的值:

  • 正整数。

min_bytes_for_compact_part

过时设置,无效。

min_bytes_for_full_part_storage

仅在 ClickHouse Cloud 中可用。使用完整类型存储数据部分所需的最小未压缩大小(以字节为单位),而不是打包。

min_bytes_for_wide_part

数据部分存储在 Wide 格式中的最小字节/行数。您可以设置这些设置中的一个、两个或都不设置。

min_bytes_to_prewarm_caches

在新部分上预热标记缓存和主索引缓存的最小大小(未压缩字节)。

min_bytes_to_rebalance_partition_over_jbod

设置当在卷磁盘 JBOD 上分发新大件时启用平衡的最小字节数。

可能的值:

  • 正整数。
  • 0 — 禁用平衡。

使用

min_bytes_to_rebalance_partition_over_jbod 设置的值不得小于max_bytes_to_merge_at_max_space_in_pool / 1024 的值。否则,ClickHouse 会引发异常。

min_compress_block_size

执行下一个标记写入时所需的未压缩数据的最小块大小。您也可以在全局设置中指定此设置(请参见min_compress_block_size设置)。在创建表时指定的值将覆盖该设置的全局值。

min_compressed_bytes_to_fsync_after_fetch

获取后进行 fsync 的最小压缩字节数(0 - 禁用)。

min_compressed_bytes_to_fsync_after_merge

合并后进行 fsync 的最小压缩字节数(0 - 禁用)。

min_delay_to_insert_ms

在单个分区中如果有许多未合并的部分,则插入数据到 MergeTree 表的最小延迟(以毫秒为单位)。

min_delay_to_mutate_ms

在有许多未完成变更时,对 MergeTree 表进行变更的最小延迟(以毫秒为单位)。

min_free_disk_bytes_to_perform_insert

在插入数据之前,磁盘空间中应有的最小空闲字节数。如果可用的空闲字节数少于 min_free_disk_bytes_to_perform_insert,则会引发异常,并且插入操作不会执行。注意,此设置:

  • 考虑到 keep_free_space_bytes 设置。
  • 不考虑 INSERT 操作将写入的数据量。
  • 仅在指定了正(非零)字节数时检查。

可能的值:

  • 任何正整数。
备注

如果同时指定 min_free_disk_bytes_to_perform_insertmin_free_disk_ratio_to_perform_insert,ClickHouse 将根据能允许更大空闲内存的值进行计算。

min_free_disk_ratio_to_perform_insert

执行 INSERT 的最小自由与总磁盘空间的比率。必须是 0 到 1 之间的浮点值。注意,此设置:

  • 考虑到 keep_free_space_bytes 设置。
  • 不考虑将通过 INSERT 操作写入的数据量。
  • 仅在指定了正(非零)比率时检查。

可能的值:

  • 浮动值,0.0 - 1.0

注意,如果同时指定 min_free_disk_ratio_to_perform_insertmin_free_disk_bytes_to_perform_insert,ClickHouse 将根据能允许更大空闲内存的值进行计算。

min_index_granularity_bytes

数据粒度的最小允许大小(以字节为单位)。

提供一种保护措施,以防止意外创建具有非常低 index_granularity_bytes 的表。

min_marks_to_honor_max_concurrent_queries

查询读取的最小标记数以应用max_concurrent_queries 设置。

备注

查询仍将受到其他 max_concurrent_queries 设置的限制。

可能的值:

  • 正整数。
  • 0 — 禁用(不对任何查询应用 max_concurrent_queries 限制)。

示例

min_merge_bytes_to_use_direct_io

合并操作所需的最小数据量,以便使用直接 I/O 访问存储磁盘。合并数据部分时,ClickHouse 计算所有待合并数据的总存储量。如果此量超过 min_merge_bytes_to_use_direct_io 字节,则 ClickHouse 使用直接 I/O 接口(O_DIRECT 选项)读取和写入数据。如果 min_merge_bytes_to_use_direct_io = 0,则直接 I/O 被禁用。

min_parts_to_merge_at_once

可以一次合并选择器选择的最小数据部分量(专家级设置,若您不理解其作用,请勿更改)。0 - 禁用。适用于 Simple 和 StochasticSimple 合并选择器。

min_relative_delay_to_close

来自其他副本的最小延迟以关闭、停止服务请求并在状态检查时不返回 Ok。

min_relative_delay_to_measure

仅在绝对延迟不小于此值的情况下计算相对副本延迟。

min_relative_delay_to_yield_leadership

过时设置,无效。

min_replicated_logs_to_keep

在 ZooKeeper 日志中保留约此数量的最新记录,即使它们已经过时。它不会影响表的工作:仅用于在清理之前诊断 ZooKeeper 日志。

可能的值:

  • 任何正整数。

min_rows_for_compact_part

过时设置,无效。

min_rows_for_full_part_storage

仅在 ClickHouse Cloud 中可用。使用完整类型存储数据部分所需的最小行数,而不是打包。

min_rows_for_wide_part

创建宽格式部分所需的最小行数,而不是紧凑格式。

min_rows_to_fsync_after_merge

合并后进行 fsync 的最小行数(0 - 禁用)。

mutation_workload

用于调节在变更与其他工作负载之间如何利用和共享资源。指定的值用作该表的后台变更的 workload 设置值。如果未指定(空字符串),则使用服务器设置 mutation_workload

另请参见

non_replicated_deduplication_window

在非复制 MergeTree 表中,存储的最新插入块的数量,以检查重复内容的哈希和。

可能的值:

  • 任何正整数。
  • 0(禁用去重)。

使用了一种去重机制,类似于复制表(请参见replicated_deduplication_window 设置)。 创建的部分的哈希和写入磁盘上的本地文件。

notify_newest_block_number

Experimental feature. Learn more.

通知最新块编号给 SharedJoin 或 SharedSet。仅在 ClickHouse Cloud 中可用。

number_of_free_entries_in_pool_to_execute_mutation

当池中可用的空闲条目少于指定数量时,不执行部分变更。这是为了为常规合并保留空闲线程,并避免“部分过多”的错误。

可能的值:

  • 任何正整数。

使用

number_of_free_entries_in_pool_to_execute_mutation 设置的值应小于background_pool_size * background_merges_mutations_concurrency_ratio的值。否则,ClickHouse 将引发异常。

number_of_free_entries_in_pool_to_execute_optimize_entire_partition

当池中可用的空闲条目少于指定数量时,不执行后台优化整个分区(此任务在设置 min_age_to_force_merge_seconds 并启用 min_age_to_force_merge_on_partition_only 时生成)。这是为了保留空闲线程用于常规合并,以避免“部分过多”。

可能的值:

  • 正整数。

number_of_free_entries_in_pool_to_execute_optimize_entire_partition 设置的值应小于background_pool_size * background_merges_mutations_concurrency_ratio的值。否则,ClickHouse 将引发异常。

number_of_free_entries_in_pool_to_lower_max_size_of_merge

当池中可用的空闲条目少于指定数量时(或复制队列),开始降低最大合并大小以处理(或放入队列)。这是为了允许小规模合并处理,不填充整个池满是长时间运行的合并。

可能的值:

  • 任何正整数。

number_of_mutations_to_delay

如果表至少有那么多未完成的变更,则人为减慢表的变更。设置为 0 时禁用。

number_of_mutations_to_throw

如果表至少有那么多未完成的变更,则抛出“变更过多”的异常。设置为 0 时禁用。

number_of_partitions_to_consider_for_merge

仅在 ClickHouse Cloud 中可用。最多考虑合并的前 N 个分区。随机加权选择分区,其中权重为该分区中可以合并的数据部分的数量。

old_parts_lifetime

在保护数据免于在自发服务器重启期间丢失的情况下,存储非活动部分的时间(以秒为单位)。

可能的值:

  • 任何正整数。

在将多个部分合并为一个新部分后,ClickHouse 将原始部分标记为非活动,并且仅在经过 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

在插入期间控制行顺序的优化,以提高新插入表部分的压缩率。

仅对普通的 MergeTree 引擎表有效。对专业的 MergeTree 引擎表(例如,CollapsingMergeTree)无效。

MergeTree 表(可选地)使用 压缩编解码器 进行压缩。通用压缩编解码器如 LZ4 和 ZSTD 在数据展现出模式时能够达到最大的压缩率。长时间的相同值通常具有很好的压缩效果。

如果启用此设置,ClickHouse 会尝试将新插入部分中的数据存储为一种行顺序,以最小化列中等值运行的数量。换句话说,少量同值运行意味着单个运行较长,因而更加适合压缩。

寻找最佳行顺序在计算上是不可行的( NP 难)。因此,ClickHouse使用启发式方法快速找到一种行顺序,这种顺序仍能改善相对于原始行顺序的压缩率。

寻找行顺序的启发式方法

通常,我们可以自由地打乱表(或表部分)的行,因为 SQL 认为以不同的行顺序的同一表(或表部分)是等效的。

当为表定义主键时,打乱行的自由度受到限制。在 ClickHouse 中,主键 C1, C2, ..., CN 强制按照列 C1C2,...Cn 排序表行(聚集索引)。因此,行只能在“等价类”内打乱,即在其主键列中具有相同值的行。 直觉上,具有高基数的主键,例如涉及 DateTime64 时间戳列的主键,导致许多小的等价类。类似地,具有低基数的主键的表会产生较少而大的等价类。没有主键的表代表了一个极端案例,即一个跨越所有行的单一等价类。

等价类越少且越大,重新打乱行的自由度就越高。

应用于在每个等价类内找到最佳行顺序的启发式方法是 D. Lemire 和 O. Kaser 提出的,在 Reordering columns for smaller indexes 中,并基于对每个等价类中的行按非主键列的升序基数进行排序。

它执行三步:

  1. 找到所有基于主键列中的行值的等价类。
  2. 对于每个等价类,计算(通常是估计)非主键列的基数。
  3. 对于每个等价类,按非主键列基数的升序对行进行排序。

如果启用,插入操作将增加额外的 CPU 成本,以分析和优化新数据的行顺序。根据数据特性的不同,预计 INSERT 操作会花费 30-50% 更长的时间。 LZ4 或 ZSTD 的压缩率平均提高 20-40%。

此设置对没有主键或低基数主键的表效果最佳,即仅有少数不同主键值的表。高基数主键,如涉及 DateTime64 类型的时间戳列的,不预计会从此设置中获益。

part_moves_between_shards_delay_seconds

Experimental feature. Learn more.

在分片之间移动部分之前/之后的等待时间。

part_moves_between_shards_enable

Experimental feature. Learn more.

实验性/不完整功能,用于在分片之间移动部分。不考虑分片表达式。

parts_to_delay_insert

如果单个分区中的活动部分数量超过 parts_to_delay_insert 值,则 INSERT 将被人为减慢。

可能的值:

  • 任何正整数。

ClickHouse 人为地执行更长时间的 INSERT(添加“睡眠”),以使后台合并过程能够比添加的部分更快地进行合并。

parts_to_throw_insert

如果单个分区中的活动部分数量超过 parts_to_throw_insert 值,则 INSERT 将被中断,并抛出“部分太多(N)。合并处理明显比插入慢”异常。

可能的值:

  • 任何正整数。

为了实现 SELECT 查询的最大性能,必须最小化处理的部分数量,详见 Merge Tree

在 23.6 之前,此设置设置为 300。您可以设置更高的不同值,这将减少 Too many parts 错误的概率,但同时 SELECT 的性能可能会下降。此外,在合并问题(例如,由于磁盘空间不足)时,您会比使用原始的 300 更晚发现这一点。

prefer_fetch_merged_part_size_threshold

如果部分大小的总和超过此阈值,并且自复制日志条目创建以来的时间超过 prefer_fetch_merged_part_time_threshold,则更倾向于从副本中获取合并的部分,而不是在本地进行合并。这是为了加速非常长的合并。

可能的值:

  • 任何正整数。

prefer_fetch_merged_part_time_threshold

如果自复制日志(ClickHouse Keeper 或 ZooKeeper)条目创建以来的时间超过此阈值,并且部分大小的总和大于 prefer_fetch_merged_part_size_threshold,则更倾向于从副本中获取合并的部分,而不是在本地进行合并。这是为了加速非常长的合并。

可能的值:

  • 任何正整数。

prewarm_mark_cache

如果为真,标记缓存将通过在插入、合并、获取和服务器启动时保存标记到标记缓存中进行预热。

prewarm_primary_key_cache

如果为真,主索引缓存将通过在插入、合并、获取和服务器启动时保存标记到标记缓存中进行预热。

primary_key_compress_block_size

主键压缩块大小,实际压缩块的大小。

primary_key_compression_codec

主键使用的压缩编码,由于主键足够小且被缓存,因此默认压缩为 ZSTD(3)。

primary_key_lazy_load

第一次使用时加载主键到内存,而不是在表初始化时加载。在存在大量表的情况下,这可以节省内存。

primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns

如果数据部分中主键列的值至少在这个比率范围内发生变化,则跳过加载下一个列到内存。这允许通过不加载不必要的主键列来节省内存使用。

ratio_of_defaults_for_sparse_serialization

列中 default 值的最小比例与 all 值的数量之比。设置此值将使列使用稀疏序列化存储。

如果列是稀疏的(主要包含零),ClickHouse 可以以稀疏格式对其进行编码并自动优化计算 - 在查询期间数据不需要完全解压缩。要启用这种稀疏序列化,请将 ratio_of_defaults_for_sparse_serialization 设置为小于 1.0。如果该值大于或等于 1.0,则列将始终使用正常的完全序列化进行写入。

可能的值:

  • 01 之间的浮点数以启用稀疏序列化
  • 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

仅在 ClickHouse Cloud 中可用。在未丢弃/替换任何范围后,尝试减少阻塞部分之前的最小等待时间。较低的设置将频繁触发后台调度池中的任务,这会导致在大规模集群中对 zookeeper 发送大量请求。

refresh_parts_interval

如果大于零 - 刷新来自底层文件系统的数据部分列表,以检查数据是否在后台更新。仅当表位于只读磁盘上(这意味着这是一个只读副本,而数据正在由另一个副本写入)时,可以进行设置。

remote_fs_execute_merges_on_single_replica_time_threshold

当此设置的值大于零时,仅单个副本立即启动合并,如果共享存储上的合并部分并且 allow_remote_fs_zero_copy_replication 启用。

备注

零拷贝复制尚未准备好投入生产 在 ClickHouse 版本 22.8 及更高版本中,零拷贝复制默认是禁用的。

不建议在生产环境中使用此功能。

可能的值:

  • 任何正整数。

remote_fs_zero_copy_path_compatible_mode

Experimental feature. Learn more.

在转换过程中以兼容模式运行零拷贝。

remote_fs_zero_copy_zookeeper_path

Experimental feature. Learn more.

用于零拷贝表独立信息的 ZooKeeper 路径。

remove_empty_parts

在通过 TTL、变更或崩溃合并算法修剪后删除空部分。

remove_rolled_back_parts_immediately

Experimental feature. Learn more.

用于未完成实验特性的设置。

remove_unused_patch_parts

在后台移除应用于所有活动部分的补丁部分。

replace_long_file_name_to_hash

如果列的文件名过长(超过 'max_file_name_length' 字节),则将其替换为 SipHash128

replicated_can_become_leader

如果为 true,则此节点上的副本将尝试获取领导权。

可能的值:

  • true
  • false

replicated_deduplication_window

ClickHouse Keeper 存储用于检查重复项的最近插入块的数量的哈希值。

可能的值:

  • 任何正整数。
  • 0(禁用去重)

Insert 命令创建一个或多个块(部分)。对于 插入去重,在写入复制表时,ClickHouse 将创建的部分的哈希值写入 ClickHouse Keeper。哈希值仅存储最近 replicated_deduplication_window 块的哈希值。最旧的哈希值会从 ClickHouse Keeper 删除。

replicated_deduplication_window 的大值会减慢 Inserts,因为需要比较更多条目。哈希值是从字段名称和类型的组合以及插入部分的数据(字节流)计算得出的。

replicated_deduplication_window_for_async_inserts

ClickHouse Keeper 存储用于检查重复项的最近异步插入块的数量的哈希值。

可能的值:

  • 任何正整数。
  • 0(禁用异步插入的去重)

Async Insert 命令将在一个或多个块(部分)中缓存。对于 插入去重,在写入复制表时,ClickHouse 将每次插入的哈希值写入 ClickHouse Keeper。哈希值仅存储最近 replicated_deduplication_window_for_async_inserts 块的哈希值。最旧的哈希值会从 ClickHouse Keeper 删除。

大量的 replicated_deduplication_window_for_async_inserts 会减慢 Async Inserts,因为需要比较更多条目。哈希值是从字段名称和类型的组合以及插入的数据(字节流)计算得出的。

replicated_deduplication_window_seconds

插入块的哈希值从 ClickHouse Keeper 删除的时间(以秒为单位)。

可能的值:

  • 任何正整数。

类似于 replicated_deduplication_windowreplicated_deduplication_window_seconds 指定为插入去重存储哈希值的时间。超过 replicated_deduplication_window_seconds 的哈希值将从 ClickHouse Keeper 中删除,即使它们少于 replicated_deduplication_window

时间相对于最近记录的时间,而不是墙时。如果这是唯一的记录,它将永远保存。

replicated_deduplication_window_seconds_for_async_inserts

异步插入的哈希值从 ClickHouse Keeper 删除的时间(以秒为单位)。

可能的值:

  • 任何正整数。

类似于 replicated_deduplication_window_for_async_insertsreplicated_deduplication_window_seconds_for_async_inserts 指定为异步插入去重存储哈希值的时间。超过 replicated_deduplication_window_seconds_for_async_inserts 的哈希值将从 ClickHouse Keeper 中删除,即使它们少于 replicated_deduplication_window_for_async_inserts

时间相对于最近记录的时间,而不是墙时。如果这是唯一的记录,它将永远保存。

replicated_fetches_http_connection_timeout

过时设置,无任何作用。

replicated_fetches_http_receive_timeout

过时设置,无任何作用。

replicated_fetches_http_send_timeout

过时设置,无任何作用。

replicated_max_mutations_in_one_entry

可以在一个 MUTATE_PART 条目中合并并执行的最大变更命令数(0 表示无限制)。

replicated_max_parallel_fetches

过时设置,无任何作用。

replicated_max_parallel_fetches_for_host

过时设置,无任何作用。

replicated_max_parallel_fetches_for_table

过时设置,无任何作用。

replicated_max_parallel_sends

过时设置,无任何作用。

replicated_max_parallel_sends_for_table

过时设置,无任何作用。

replicated_max_ratio_of_wrong_parts

如果错误部分与总部分的比例小于此值 - 允许开始。

可能的值:

  • 浮点,0.0 - 1.0

shared_merge_tree_create_per_replica_metadata_nodes

启用在 ZooKeeper 中为每个副本创建 /metadata 和 /columns 节点。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_disable_merges_and_mutations_assignment

停止为共享合并树分配合并。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_enable_coordinated_merges

Experimental feature. Learn more.

启用协调合并策略。

shared_merge_tree_enable_keeper_parts_extra_data

Experimental feature. Learn more.

启用在虚拟部分中写入属性并在 keeper 中提交块。

shared_merge_tree_enable_outdated_parts_check

启用过时部分检查。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_idle_parts_update_seconds

在共享合并树中未被 ZooKeeper 监视的部分更新的时间间隔(以秒为单位)。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_initial_parts_update_backoff_ms

部分更新的初始后退时间。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_interserver_http_connection_timeout_ms

服务器间 HTTP 连接的超时。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_interserver_http_timeout_ms

服务器间 HTTP 通信的超时。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_leader_update_period_random_add_seconds

在共享合并树领导更新周期中添加 0 到 x 秒的均匀分布值,以避免出现“雷同效应”。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_leader_update_period_seconds

最大重新检查领导权间隔。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_outdated_parts_to_process_at_once

在一次 HTTP 请求中,最大过时部分数量的领导者将尝试确认移除。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_parts_update_backoff_ms

部分更新的最大后退时间。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_parts_update_leaders_in_total

最大部分更新领导者数量。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_parts_update_leaders_per_az

最大每个可用区的部分更新领导者数量。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_replicas_for_parts_deletion

参与部分删除(清理线程)的最大副本。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_replicas_to_merge_parts_for_each_parts_range

尝试分配潜在冲突合并的最大副本(允许避免冗余的合并分配冲突)。0 表示禁用。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_max_suspicious_broken_parts

SMT 的最大损坏部分数,如果更多则禁止自动分离。

shared_merge_tree_max_suspicious_broken_parts_bytes

最大所有损坏部分的总大小,如果更多则禁止自动分离。

shared_merge_tree_memo_ids_remove_timeout_seconds

我们存储插入记忆化 ID 的时间,以避免在插入重试期间发生错误操作。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_merge_coordinator_election_check_period_ms

Experimental feature. Learn more.

合并协调员选举线程的运行间隔。

shared_merge_tree_merge_coordinator_factor

Experimental feature. Learn more.

协调员线程延迟的时间改变因子。

shared_merge_tree_merge_coordinator_fetch_fresh_metadata_period_ms

Experimental feature. Learn more.

合并协调员与 zookeeper 同步以获取新元数据的频率。

shared_merge_tree_merge_coordinator_max_merge_request_size

Experimental feature. Learn more.

协调员可以一次从 MergerMutator 请求的合并数量。

shared_merge_tree_merge_coordinator_max_period_ms

Experimental feature. Learn more.

合并协调员线程的最大运行间隔。

shared_merge_tree_merge_coordinator_merges_prepare_count

Experimental feature. Learn more.

协调员应该准备并分配给工作者的合并条目数。

shared_merge_tree_merge_coordinator_min_period_ms

Experimental feature. Learn more.

合并协调员线程的最小运行间隔。

shared_merge_tree_merge_worker_fast_timeout_ms

Experimental feature. Learn more.

如果需要在立即操作后更新状态,合并工作线程将使用的超时。

shared_merge_tree_merge_worker_regular_timeout_ms

Experimental feature. Learn more.

合并工作线程的运行间隔。

shared_merge_tree_partitions_hint_ratio_to_reload_merge_pred_for_mutations

<candidate partitions for mutations only (partitions that cannot be merged)>/<candidate partitions for mutations> 比例高于设置时,将在合并/变更选择任务中重新加载合并谓词。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_parts_load_batch_size

一次调度提取部分元数据工作数量。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_postpone_next_merge_for_locally_merged_parts_ms

保持本地合并部分的时间,而不启动包含该部分的新合并。让其他副本有机会获取该部分并启动此合并。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_postpone_next_merge_for_locally_merged_parts_rows_threshold

合并后推迟分配下一次合并的部分的最小大小(以行为单位)。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_range_for_merge_window_size

保持本地合并部分的时间,而不启动包含该部分的新合并。允许其他副本有机会获取该部分并启动此合并。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_read_virtual_parts_from_leader

当可能时从领导者读取虚拟部分。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_try_fetch_part_in_memory_data_from_replicas

如果启用,所有副本将尝试从其他已存在的副本中获取内存中部分数据(如主键、分区信息等)。

shared_merge_tree_use_metadata_hints_cache

允许从其他副本中的内存缓存请求 FS 缓存提示。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_use_outdated_parts_compact_format

对过时部分使用压缩格式:减少对 Keeper 的负载,改善过时部分的处理。仅在 ClickHouse Cloud 中可用。

shared_merge_tree_use_too_many_parts_count_from_virtual_parts

如果启用,过多的部分计数将依赖于 Keeper 中的共享数据,而不是本地副本状态。仅在 ClickHouse Cloud 中可用。

simultaneous_parts_removal_limit

如果有很多过时部分,清理线程将在一次迭代中尝试删除最多 simultaneous_parts_removal_limit 部分。 simultaneous_parts_removal_limit 设置为 0 表示无限制。

sleep_before_commit_local_part_in_replicated_table_ms

测试用。请勿更改。

sleep_before_loading_outdated_parts_ms

测试用。请勿更改。

storage_policy

存储磁盘策略的名称。

table_disk

这是表磁盘,路径/端点应指向表数据,而不是数据库数据。仅可设置为 s3_plain/s3_plain_rewritable/web。

temporary_directories_lifetime

保留 tmp_-目录的时间(以秒为单位)。您不应降低此值,因为低设置可能导致合并和变更无法正常工作。

try_fetch_recompressed_part_timeout

在开始合并与重新压缩之前的超时(以秒为单位)。在此期间,ClickHouse 尝试从分配了该重新压缩合并的副本中获取重新压缩的部分。

在大多数情况下,重新压缩工作速度较慢,因此我们不会在超时之前启动重新压缩的合并,而是尝试从分配了该重新压缩合并的副本中获取重新压缩的部分。

可能的值:

  • 任何正整数。

ttl_only_drop_parts

控制在 MergeTree 表中,当该部分中的所有行根据其 TTL 设置过期时,数据部分是否完全丢弃。

ttl_only_drop_parts 禁用(默认情况下)时,仅移除根据其 TTL 设置过期的行。

ttl_only_drop_parts 启用时,如果该部分中的所有行根据其 TTL 设置过期,则整个部分将被丢弃。

use_adaptive_write_buffer_for_dynamic_subcolumns

允许在写入动态子列时使用自适应写入缓冲区,以减少内存使用。

use_async_block_ids_cache

如果为 true,我们缓存异步插入的哈希值。

可能的值:

  • true
  • false

一个包含多个异步插入的块将生成多个哈希值。当一些插入被重复时,keeper 只有在一个 RPC 中返回一个重复的哈希值,这将导致不必要的 RPC 重试。此缓存将监视 Keeper 中的哈希值路径。如果在 Keeper 中监视到更新,则缓存将尽快更新,以便我们能够过滤内存中的重复插入。

use_compact_variant_discriminators_serialization

为 Variant 数据类型中的区分符启用二进制压缩序列化模式。此模式允许在主要是一个变体或有大量 NULL 值时,显著减少存储区分符的内存使用。

use_const_adaptive_granularity

始终为整个部分使用恒定粒度。允许在内存中压缩索引粒度的值。在处理极大工作负载和细表时可能有用。

use_metadata_cache

过时设置,无任何作用。

use_minimalistic_checksums_in_zookeeper

在 ZooKeeper 中使用较小的格式(几十字节)作为部分校验和,而不是普通格式(几十 KB)。在启用之前,请检查所有副本是否支持新格式。

use_minimalistic_part_header_in_zookeeper

ZooKeeper 中数据部分头的存储方法。如果启用,ZooKeeper 存储更少的数据。有关详细信息,请参见 此处

use_primary_key_cache

使用主键的缓存,代替将所有索引保存在内存中。对于非常大的表可能会有用。

vertical_merge_algorithm_min_bytes_to_activate

激活 Vertical merge 算法的合并部分中最小(近似)未压缩字节大小。

vertical_merge_algorithm_min_columns_to_activate

激活 Vertical merge 算法的非主键列的最小数量。

vertical_merge_algorithm_min_rows_to_activate

激活 Vertical merge 算法的合并部分中最小(近似)行数之和。

vertical_merge_remote_filesystem_prefetch

如果为 true,则在合并时将从远程文件系统预取下一列的数据。

wait_for_unique_parts_send_before_shutdown_ms

在关闭之前,表将等待所需的时间,以便从其他副本获取唯一部分(仅存在于当前副本中)(0 表示禁用)。

write_ahead_log_bytes_to_fsync

过时设置,无任何作用。

write_ahead_log_interval_ms_to_fsync

过时设置,无任何作用。

write_ahead_log_max_bytes

过时设置,无任何作用。

write_final_mark

过时设置,无任何作用。

write_marks_for_substreams_in_compact_parts

启用按每个子流而不是每个列在压缩部分中写入标记。这允许高效地从数据部分读取单个子列。

zero_copy_concurrent_part_removal_max_postpone_ratio

为了获得较小的独立范围,最大推迟移除的顶级部分比例。建议不更改。

zero_copy_concurrent_part_removal_max_split_times

将独立的过时部分范围分割成更小子范围的最大递归深度。建议不更改。

zero_copy_merge_mutation_min_parts_size_sleep_before_lock

如果启用零拷贝复制,在尝试锁定合并或变更时,根据部分大小随机睡眠一段时间。

zero_copy_merge_mutation_min_parts_size_sleep_no_scale_before_lock

如果启用零拷贝复制,在尝试锁定合并或变更之前,随机睡眠最多 500 毫秒。

zookeeper_session_expiration_check_period

ZooKeeper 会话过期检查周期,以秒为单位。

可能的值:

  • 任何正整数。