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

全局服务器设置

本节包含无法在会话或查询级别更改的服务器设置的描述。这些设置存储在 ClickHouse 服务器的 config.xml 文件中。有关 ClickHouse 中配置文件的更多信息,请参见 "配置文件"

其他设置在 "设置" 部分中描述。 在研究这些设置之前,我们建议您阅读 配置文件 部分,并注意替换的使用(incloptional 属性)。

allow_use_jemalloc_memory

允许使用 jemalloc 内存。

类型:Bool

默认值:1

asynchronous_heavy_metrics_update_period_s

更新异步指标的周期(以秒为单位)。

类型:UInt32

默认值:120

asynchronous_metric_log

在 ClickHouse Cloud 部署中默认启用。

如果该设置在您的环境中默认未启用,您可以根据 ClickHouse 的安装方式,按照以下说明启用或禁用它。

启用

要手动开启异步指标日志历史记录收集 system.asynchronous_metric_log,请创建 /etc/clickhouse-server/config.d/asynchronous_metric_log.xml,其内容如下:

禁用

要禁用 asynchronous_metric_log 设置,您应该创建以下文件 /etc/clickhouse-server/config.d/disable_asynchronous_metric_log.xml,其内容如下:

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

asynchronous_metrics_update_period_s

更新异步指标的周期(以秒为单位)。

类型:UInt32

默认值:1

auth_use_forwarded_address

对通过代理连接的客户端使用源地址进行身份验证。

备注

此设置应谨慎使用,因为转发的地址可以很容易被伪造 - 接受此类身份验证的服务器不应直接访问,而应仅通过受信任的代理访问。

类型:Bool

默认值:0

background_buffer_flush_schedule_pool_size

将用于在后台执行 Buffer-engine 表 的刷新操作的最大线程数。

类型:UInt64

默认值:16

background_common_pool_size

将用于在后台执行各种操作(主要是垃圾收集)的最大线程数,用于 *MergeTree-engine 表。

类型:UInt64

默认值:8

background_distributed_schedule_pool_size

将用于执行分布式发送的最大线程数。

类型:UInt64

默认值:16

background_fetches_pool_size

将用于从另一个副本后台获取数据部分的最大线程数,用于 *MergeTree-engine 表。

类型:UInt64

默认值:16

background_merges_mutations_concurrency_ratio

设置线程数与可以同时执行的后台合并和变更数之间的比例。

例如,如果比例等于 2,而 background_pool_size 设置为 16,则 ClickHouse 可以同时执行 32 个后台合并。这是可能的,因为后台操作可以被暂停和推迟。这是为了给小合并提供更高的执行优先级。

备注

您只能在运行时增加此比例。要降低它,您必须重启服务器。

background_pool_size 设置类似,background_merges_mutations_concurrency_ratio 可从 default 配置文件应用,以保持向后兼容。

类型:Float

默认值:2

background_merges_mutations_scheduling_policy

用于调度后台合并和变更的策略。可能的值为:round_robinshortest_task_first

用于选择由后台线程池执行的下一个合并或变更的算法。策略可以在运行时进行更改,而无需重启服务器。 可以从 default 配置文件应用,以保持向后兼容。

可能的值:

  • round_robin — 每个并发合并和变更按轮询顺序执行,以确保无饥饿操作。较小的合并比大合并完成得更快,只是因为它们合并的区块较少。
  • shortest_task_first — 始终执行较小的合并或变更。合并和变更根据其结果大小分配优先级。较小的合并严格优先于较大的。这一策略确保了较小部分的最快合并,但可能导致在被 INSERTs 严重过载的分区中大合并无限饥饿。

类型:String

默认值:round_robin

background_message_broker_schedule_pool_size

将用于执行消息流的后台操作的最大线程数。

类型:UInt64

默认值:16

background_move_pool_size

将用于将数据部分移动到另一个磁盘或卷的最大线程数,用于 *MergeTree-engine 表。

类型:UInt64

默认值:8

background_schedule_pool_size

将用于持续执行某些轻量级周期操作(用于复制表、Kafka 流处理和 DNS 缓存更新)的最大线程数。

类型:UInt64

默认值:512

backups

备份设置,用于执行 BACKUP TO File() 操作时。

可以通过子标签配置以下设置:

设置描述默认值
allowed_path使用 File() 备份时的路径。此设置必须被设置以使用 File。该路径可以相对于实例目录,也可以是绝对路径。true
remove_backup_files_after_failure如果 BACKUP 命令失败,ClickHouse 将尝试移除在失败之前已复制到备份中的文件,否则将保留已复制的文件。true

此设置的默认配置为:

backup_threads

执行 BACKUP 请求的最大线程数。

类型:UInt64

默认值:16

backups_io_thread_pool_queue_size

可以在备份 IO 线程池中调度的最大作业数。建议将此队列保持为无限制,这是因为当前的 S3 备份逻辑。

备注

0(默认)表示无限制。

类型:UInt64

默认值:0

bcrypt_workfactor

用于 bcrypt_password 认证类型的工作因子,使用 Bcrypt 算法

默认值:12

cache_size_to_ram_max_ratio

设置缓存大小与 RAM 的最大比例。允许在内存较低的系统上降低缓存大小。

类型:Double

默认值:0.5

concurrent_threads_soft_limit_num

允许运行所有查询的最大查询处理线程数,不包括从远程服务器检索数据的线程。这不是硬限制。如果达到限制,查询仍将获得至少一个线程来运行。如果在执行过程中有更多线程可用,查询可以提升到所需的线程数。

备注

0(默认)表示无限制。

类型:UInt64

默认值:0

concurrent_threads_soft_limit_ratio_to_cores

concurrent_threads_soft_limit_num 相同,但与核心的比例。

类型:UInt64

默认值:0

concurrent_threads_scheduler

用于调度由 concurrent_threads_soft_limit_numconcurrent_threads_soft_limit_ratio_to_cores 指定的 CPU 槽的策略。用于管理并发查询中有限 CPU 槽如何分配的算法。调度程序可以在运行时更改,而无需重启服务器。

类型:String

默认值:round_robin

可能的值:

  • round_robin — 每个设置了 use_concurrency_control = 1 的查询分配最多 max_threads 个 CPU 槽。每个线程一个插槽。在争用情况下,CPU 槽按照轮询方式授予查询。请注意,第一个槽无条件授予,这可能导致在有大量 max_threads = 1 的查询存在时,使具有高 max_threads 的查询不公平且延迟增加。
  • fair_round_robin — 每个设置了 use_concurrency_control = 1 的查询分配最多 max_threads - 1 个 CPU 槽。round_robin 的变体,不要求每个查询的第一个线程占用一个 CPU 槽。这样,max_threads = 1 的查询不需要任何插槽,因此不会不公平地占用所有插槽。没有插槽被无条件授予。

default_database

默认数据库名称。

类型:String

默认值:default

disable_internal_dns_cache

禁用内部 DNS 缓存。建议在 Kubernetes 等基础设施经常变化的系统中操作 ClickHouse。

类型:Bool

默认值:0

dns_cache_max_entries

内部 DNS 缓存的最大条目数。

类型:UInt64

默认值:10000

dns_cache_update_period

内部 DNS 缓存更新周期(以秒为单位)。

类型:Int32

默认值:15

dns_max_consecutive_failures

在将主机从 ClickHouse DNS 缓存中删除之前,最大的连续解析失败次数。

类型:UInt32

默认值:10

index_mark_cache_policy

索引标记缓存策略名称。

类型:String

默认值:SLRU

index_mark_cache_size

索引标记的缓存的最大大小。

备注

0 表示禁用。

此设置可以在运行时修改,并将立即生效。

类型:UInt64

默认值:0

index_mark_cache_size_ratio

索引标记缓存中受保护队列的大小(对于 SLRU 策略),相对于缓存的总大小。

类型:Double

默认值:0.5

index_uncompressed_cache_policy

未压缩索引缓存策略名称。

类型:String

默认值:SLRU

index_uncompressed_cache_size

未压缩的 MergeTree 索引块的缓存的最大大小。

备注

0 表示禁用。

此设置可以在运行时修改,并将立即生效。

类型:UInt64

默认值:0

index_uncompressed_cache_size_ratio

未压缩索引缓存中受保护队列的大小(对于 SLRU 策略),相对于缓存的总大小。

类型:Double

默认值:0.5

skipping_index_cache_policy

跳过索引缓存策略名称。

类型:String

默认值:SLRU

skipping_index_cache_size

跳过索引的缓存大小。零表示禁用。

备注

此设置可以在运行时修改,并将立即生效。

类型:UInt64

默认值:5368709120 (= 5 GiB)

skipping_index_cache_size_ratio

跳过索引缓存中受保护队列的大小(对于 SLRU 策略),相对于缓存的总大小。

类型:Double

默认值:0.5

skipping_index_cache_max_entries

跳过索引缓存中最多的条目数。

类型:UInt64

默认值:10000000

io_thread_pool_queue_size

可以在 IO 线程池中调度的最大作业数。

备注

0 表示无限制。

类型:UInt64

默认值:10000

mark_cache_policy

标记缓存策略名称。

类型:String

默认值:SLRU

mark_cache_size

MergeTree 表家族的标记(索引)的最大缓存大小。

备注

此设置可以在运行时修改,并将立即生效。

类型:UInt64

默认值:5368709120

mark_cache_size_ratio

标记缓存中受保护队列的大小(对于 SLRU 策略),相对于缓存的总大小。

类型:Double

默认值:0.5

max_backup_bandwidth_for_server

所有备份在服务器上的最大读取速度(以字节每秒计)。零表示无限制。

类型:UInt64

默认值:0

max_backups_io_thread_pool_free_size

如果备份 IO 线程池中 空闲 线程的数量超过 max_backup_io_thread_pool_free_size,ClickHouse将释放被空闲线程占用的资源并减少池的大小。如有必要,线程可以再次创建。

类型:UInt64

默认值:0

max_backups_io_thread_pool_size

ClickHouse 使用备份 IO 线程池中的线程执行 S3 备份 IO 操作。max_backups_io_thread_pool_size 限制池中最大线程数。

类型:UInt64

默认值:1000

max_concurrent_queries

同时执行的查询总数的限制。请注意,对于 INSERTSELECT 查询的限制,以及用户的查询最大数量也必须考虑。

另请参见:

备注

0(默认)表示无限制。

此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。

类型:UInt64

默认值:0

max_concurrent_insert_queries

同时插入查询总数的限制。

备注

0(默认)表示无限制。

此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。

类型:UInt64

默认值:0

max_concurrent_select_queries

同时选择查询总数的限制。

备注

0(默认)表示无限制。

此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。

类型:UInt64

默认值:0

max_waiting_queries

并发等待查询的总数限制。 在所需表异步加载期间,正在等待的查询的执行被阻止(请参见 async_load_databases

备注

等待查询不计入检查由以下设置控制的限制:

此更正是为了避免在服务器启动后触碰这些限制。

备注

0(默认)表示无限制。

此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。

类型:UInt64

默认值:0

max_connections

最大的服务器连接数。

类型:Int32

默认值:1024

max_io_thread_pool_free_size

如果 IO 线程池中 空闲 线程的数量超过 max_io_thread_pool_free_size,ClickHouse 将释放被空闲线程占用的资源并减少池的大小。如有必要,线程可以再次创建。

类型:UInt64

默认值:0

max_io_thread_pool_size

ClickHouse 使用 IO 线程池中的线程执行某些 IO 操作(例如,与 S3 互动)。max_io_thread_pool_size 限制池中最大线程数。

类型:UInt64

默认值:100

max_local_read_bandwidth_for_server

本地读取的最大速度(以字节每秒计)。

备注

0 表示无限制。

类型:UInt64

默认值:0

max_local_write_bandwidth_for_server

本地写入的最大速度(以字节每秒计)。

备注

0 表示无限制。

类型:UInt64

默认值:0

max_partition_size_to_drop

删除分区的限制。

如果 MergeTree 表的大小超过 max_partition_size_to_drop(以字节为单位),您将无法使用 DROP PARTITION 查询删除分区。 该设置不需要重启 ClickHouse 服务器以应用。另一个禁用限制的方法是创建 <clickhouse-path>/flags/force_drop_table 文件。

备注

0 表示您可以不受限制地删除分区。

这个限制不会限制删除表和截断表,参见 max_table_size_to_drop

示例

类型:UInt64

默认值:50

max_remote_read_network_bandwidth_for_server

通过网络读取的数据交换的最大速度(以字节每秒计)。

备注

0(默认)表示无限制。

类型:UInt64

默认值:0

max_remote_write_network_bandwidth_for_server

通过网络写入的数据交换的最大速度(以字节每秒计)。

备注

0(默认)表示无限制。

类型:UInt64

默认值:0

max_server_memory_usage

总内存使用量的限制。 默认的 max_server_memory_usage 值计算为 memory_amount * max_server_memory_usage_to_ram_ratio

备注

0(默认)表示无限制。

类型:UInt64

默认值:0

max_server_memory_usage_to_ram_ratio

max_server_memory_usage 相同,但与物理 RAM 的比例。允许在内存较低的系统上降低内存使用。

在内存和交换空间不足的主机上,您可能需要将 max_server_memory_usage_to_ram_ratio 设置得大于 1。

备注

0 表示无限制。

类型:Double

默认值:0.9

max_build_vector_similarity_index_thread_pool_size

用于构建向量索引的最大线程数。

备注

0 表示所有核心。

类型:UInt64

默认值:16

cgroups_memory_usage_observer_wait_time

服务器的最大允许内存消耗通过 cgroups 中的相应阈值进行调整的时间间隔(以秒为单位)。

要禁用 cgroup 观察者,请将此值设置为 0

见设置:

类型:UInt64

默认值:15

cgroup_memory_watcher_hard_limit_ratio

通过 cgroups 指定的服务器进程内存消耗的“硬”阈值,超过此阈值后服务器的最大内存消耗将调整为阈值值。

见设置:

类型:Double

默认值:0.95

cgroup_memory_watcher_soft_limit_ratio

通过 cgroups 指定的服务器进程内存消耗的“软”阈值,超过此阈值后 jemalloc 中的区域将被清除。

见设置:

类型:Double

默认值:0.9

max_database_num_to_warn

如果附加的数据库数量超过指定值,ClickHouse 服务器将向 system.warnings 表中添加警告消息。

示例

默认值:1000

max_table_num_to_warn

如果附加的表数量超过指定值,ClickHouse 服务器将向 system.warnings 表中添加警告消息。

示例

默认值:5000

max_view_num_to_warn

如果附加的视图数量超过指定值,ClickHouse 服务器将向 system.warnings 表中添加警告消息。

示例

类型:UInt64

默认值:10000

max_dictionary_num_to_warn

如果附加的字典数量超过指定值,ClickHouse 服务器将向 system.warnings 表中添加警告消息。

示例

类型:UInt64

默认值:1000

max_part_num_to_warn

如果活动部分的数量超过指定值,ClickHouse 服务器将向 system.warnings 表中添加警告消息。

示例

类型:UInt64

默认值:100000

max_table_num_to_throw

如果表的数量大于此值,服务器将抛出异常。

不计算以下表:

  • 视图
  • 远程
  • 字典
  • 系统

仅计算用于数据库引擎的表:

  • 原子
  • 普通
  • 复制
  • 懒加载
备注

0 表示没有限制。

示例

类型:UInt64

默认值:0

max_replicated_table_num_to_throw

如果复制表的数量大于此值,服务器将抛出异常。

仅计算用于数据库引擎的表:

  • 原子
  • 普通
  • 复制
  • 懒加载
备注

0 表示没有限制。

示例

类型:UInt64

默认值:0

max_dictionary_num_to_throw

如果字典的数量大于此值,服务器将抛出异常。

仅计算用于数据库引擎的表:

  • 原子
  • 普通
  • 复制
  • 懒加载
备注

0 表示没有限制。

示例

类型:UInt64

默认值:0

max_view_num_to_throw

如果视图的数量大于此值,服务器将抛出异常。

仅计算用于数据库引擎的表:

  • 原子
  • 普通
  • 复制
  • 懒加载
备注

0 表示没有限制。

示例

类型:UInt64

默认值:0

max_database_num_to_throw

如果数据库的数量大于此值,服务器将抛出异常。

备注

0(默认)表示没有限制。

示例

类型:UInt64

默认值:0

max_temporary_data_on_disk_size

用于外部聚合、连接或排序所使用的最大存储量。 超过此限制的查询将失败并抛出异常。

备注

0 表示无限制。

另请参见:

类型:UInt64

默认值:0

max_thread_pool_free_size

如果全局线程池中 空闲 线程的数量大于 max_thread_pool_free_size,则 ClickHouse 释放占用了一些线程的资源,并减少池的大小。如有必要,线程可以再次创建。

示例

类型:UInt64

默认值:0

max_thread_pool_size

ClickHouse 使用全局线程池中的线程处理查询。如果没有空闲线程来处理查询,则在池中创建一个新线程。max_thread_pool_size 限制池中最大线程数。

示例

类型:UInt64

默认值:10000

mmap_cache_size

设置映射文件的缓存大小(以字节为单位)。此设置允许避免频繁的打开/关闭调用(由于随之而来的页面错误而代价高昂),并且可以从多个线程和查询中重用映射。设置值是映射区域的数量(通常等于映射文件的数量)。

可以通过以下系统表中的以下指标监控映射文件中的数据量:

系统表指标
system.metricssystem.metric_logMMappedFilesMMappedFileBytes
system.asynchronous_metrics_logMMapCacheCells
system.events, system.processes, system.query_log, system.query_thread_log, system.query_views_logCreatedReadBufferMMap, CreatedReadBufferMMapFailed, MMappedFileCacheHits, MMappedFileCacheMisses
备注

映射文件中的数据量不会直接消耗内存,并且在查询或服务器内存使用中不会被计算 —— 因为此内存可以像操作系统页面缓存一样被丢弃。在 MergeTree 系列表中,删除旧分区时,缓存会自动被丢弃(文件将关闭),也可以通过 SYSTEM DROP MMAP CACHE 查询手动丢弃。

此设置可以在运行时修改,并会立即生效。

类型: UInt64

默认: 1000

restore_threads

执行 RESTORE 请求的最大线程数。

类型: UInt64

默认: 16

show_addresses_in_stack_traces

如果设置为 true,将在堆栈跟踪中显示地址。

类型: Bool

默认: 1

shutdown_wait_unfinished_queries

如果设置为 true,ClickHouse 将等待正在运行的查询完成后再关闭。

类型: Bool

默认: 0

table_engines_require_grant

如果设置为 true,则用户在创建特定引擎的表时需要授权,例如 GRANT TABLE ENGINE ON TinyLog to user

备注

默认情况下,为了向后兼容,创建特定表引擎的表时会忽略授权,但您可以通过将其设置为 true 来改变此行为。

类型: Bool

默认: false

temporary_data_in_cache

使用此选项,临时数据将在特定磁盘的缓存中存储。 在此部分中,应指定类型为 cache 的磁盘名称。 在这种情况下,缓存和临时数据将共享相同的空间,同时可以释放磁盘缓存以创建临时数据。

备注

只能使用一个选项来配置临时数据存储: tmp_path, tmp_policy, temporary_data_in_cache

示例

local_disk 的缓存和临时数据将存储在文件系统中的 /tiny_local_cache,由 tiny_local_cache 管理。

类型: String

默认: ""

thread_pool_queue_size

允许在全局线程池中调度的最大作业数。增加队列大小会导致更大的内存使用。建议将此值保持等于 max_thread_pool_size

备注

值为 0 意味着无限制。

示例

类型: UInt64

默认: 10000

tmp_policy

临时数据存储的策略。有关更多信息,请参见 MergeTree 表引擎 文档。

备注
  • 只能使用一个选项来配置临时数据存储: tmp_path, tmp_policy, temporary_data_in_cache
  • move_factor, keep_free_space_bytes, max_data_part_size_bytes 被忽略。
  • 策略应具有确切的 一个卷,并包含 本地 磁盘。

示例

/disk1 充满时,临时数据将存储在 /disk2 上。

类型: String

默认: ""

uncompressed_cache_policy

未压缩缓存策略名称。

类型: String

默认: SLRU

uncompressed_cache_size

用于 MergeTree 系列表的未压缩数据的最大缓存大小(以字节为单位)。

服务器共享一个缓存。按需分配内存。如果启用了选项 use_uncompressed_cache,则将使用此缓存。

未压缩缓存在个别情况下对非常短的查询是有利的。

备注

值为 0 意味着禁用。

此设置可以在运行时修改,并会立即生效。

类型: UInt64

默认: 0

uncompressed_cache_size_ratio

未压缩缓存中受保护队列的大小(在 SLRU 策略下),与缓存的总大小的比例。

类型: Double

默认: 0.5

builtin_dictionaries_reload_interval

重新加载内置字典的间隔(以秒为单位)。

ClickHouse 每 x 秒重新加载内置字典。这使得可以在不重启服务器的情况下“动态”编辑字典。

示例

类型: UInt64

默认: 3600

compression

针对 MergeTree 引擎表的数据压缩设置。

备注

如果您刚开始使用 ClickHouse,不建议更改此设置。

配置模板

<case> 字段

  • min_part_size – 数据分区的最小大小。
  • min_part_size_ratio – 数据分区大小与表大小的比例。
  • method – 压缩方法。可接受的值: lz4, lz4hc, zstd,deflate_qpl
  • level – 压缩级别。请参见 Codecs
备注

您可以配置多个 <case> 部分。

当条件满足时的操作

  • 如果数据分区匹配设置的条件,ClickHouse 将使用指定的压缩方法。
  • 如果数据分区匹配多个条件集,ClickHouse 将使用第一个匹配的条件集。
备注

如果数据分区没有满足任何条件,ClickHouse 将使用 lz4 压缩。

示例

encryption

配置用于 加密编解码器 的密钥获取命令。密钥(或密钥)应写入环境变量或配置文件中。

密钥可以是十六进制或字符串,长度为 16 字节。

示例

从配置加载:

备注

不建议在配置文件中存储密钥。这不安全。您可以将密钥移到安全磁盘上的单独配置文件中,并在 config.d/ 文件夹中放置该配置文件的符号链接。

从配置加载,当密钥为十六进制时:

从环境变量加载密钥:

这里 current_key_id 设置当前加密密钥,所有指定的密钥可以用于解密。

这些方法可以应用于多个密钥:

这里 current_key_id 显示当前的加密密钥。

此外,用户可以添加 nonce,必须为 12 字节(默认情况下,加密和解密过程使用由零字节组成的 nonce):

或者可以以十六进制设置:

备注

上述所有内容同样适用 aes_256_gcm_siv(但密钥必须为 32 字节)。

error_log

默认情况下是禁用的。

启用

要手动开启错误历史收集 system.error_log,请创建 /etc/clickhouse-server/config.d/error_log.xml,内容如下:

禁用

要禁用 error_log 设置,您应创建以下文件 /etc/clickhouse-server/config.d/disable_error_log.xml,内容如下:

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

custom_settings_prefixes

自定义设置的前缀列表。前缀必须用逗号分隔。

示例

另见

core_dump

配置核心转储文件大小的软限制。

备注

硬限制通过系统工具配置。

示例

默认: 1073741824

database_atomic_delay_before_drop_table_sec

删除表期间可以使用 UNDROP 语句恢复的延迟时间。如果以 SYNC 修饰符运行 DROP TABLE,则该设置将被忽略。 此设置的默认值为 480(8 分钟)。

默认: 480

database_catalog_unused_dir_hide_timeout_sec

清理 store/ 目录中的垃圾的任务参数。 如果某个子目录未被 clickhouse-server 使用,并且该目录在过去的 database_catalog_unused_dir_hide_timeout_sec 秒内未被修改,则该任务将通过 移除所有访问权限来“隐藏”该目录。它也适用于 clickhouse-server 不期望在 store/ 内看到的目录。

备注

值为 0 意味着“立即”。

默认: 3600(1小时)

database_catalog_unused_dir_rm_timeout_sec

清理 store/ 目录中的垃圾的任务参数。 如果某个子目录未被 clickhouse-server 使用,并且之前已被“隐藏” (请参见 database_catalog_unused_dir_hide_timeout_sec),并且该目录在过去的 database_catalog_unused_dir_rm_timeout_sec 秒内未被修改,则该任务将删除该目录。 它也适用于 clickhouse-server 不期望在 store/ 内看到的目录。

备注

值为 0 意味着“从不”。默认值对应于 30 天。

默认: 2592000(30 天)。

database_catalog_drop_error_cooldown_sec

在表删除失败的情况下,ClickHouse 将等待此超时时间后重试操作。

类型: UInt64

默认: 5

database_catalog_drop_table_concurrency

用于删除表的线程池大小。

类型: UInt64

默认: 16

database_catalog_unused_dir_cleanup_period_sec

清理 store/ 目录中的垃圾的任务参数。 设置任务的调度周期。

备注

值为 0 意味着“从不”。默认值对应于 1 天。

默认: 86400(1天)。

default_profile

默认设置配置文件。设置配置文件位于 user_config 设置指定的文件中。

示例

default_replica_path

ZooKeeper 中表的路径。

示例

default_replica_name

ZooKeeper 中的副本名称。

示例

dictionaries_config

字典的配置文件路径。

路径:

  • 指定绝对路径或相对于服务器配置文件的路径。
  • 路径可以包含通配符 * 和 ?。

另见:

示例

user_defined_executable_functions_config

可执行用户定义函数的配置文件路径。

路径:

  • 指定绝对路径或相对于服务器配置文件的路径。
  • 路径可以包含通配符 * 和 ?。

另见:

示例

dictionaries_lazy_load

字典的延迟加载。

  • 如果为 true,则每个字典在首次使用时加载。如果加载失败,正在使用该字典的函数将抛出异常。
  • 如果为 false,则服务器在启动时加载所有字典。
备注

服务器将在启动时等待所有字典完成加载后再接受任何连接(例外:如果 wait_dictionaries_load_at_startup 设置为 false)。

示例

format_schema_path

包含输入数据方案的目录路径,如 CapnProto 格式的方案。

示例

graphite

将数据发送到 Graphite

设置:

  • host – Graphite 服务器。
  • port – Graphite 服务器上的端口。
  • interval – 发送间隔,单位为秒。
  • timeout – 发送数据的超时时间,单位为秒。
  • root_path – 键的前缀。
  • metrics – 从 system.metrics 表发送数据。
  • events – 从 system.events 表发送在指定时间段内累积的数据。
  • events_cumulative – 从 system.events 表发送累积数据。
  • asynchronous_metrics – 从 system.asynchronous_metrics 表发送数据。

您可以配置多个 <graphite> 子句。例如,您可以使用此功能在不同时间间隔发送不同的数据。

示例

graphite_rollup

用于 Graphite 的数据稀疏设置。

有关更多详细信息,请参见 GraphiteMergeTree

示例

google_protos_path

定义包含 Protobuf 类型的 proto 文件的目录。

示例:

http_handlers

允许使用自定义 HTTP 处理程序。 要添加新的 http 处理程序,只需添加一个新的 <rule>。 规则按定义的自上而下进行检查,第一个匹配将执行处理程序。

可以通过子标签配置以下设置:

子标签定义
url匹配请求 URL,您可以使用 'regex:' 前缀来使用正则表达式匹配(可选)
methods匹配请求方法,您可以使用逗号分隔多个方法匹配(可选)
headers匹配请求头,匹配每个子元素(子元素名称是头部名称),您可以使用 'regex:' 前缀来使用正则表达式匹配(可选)
handler请求处理程序
empty_query_string检查 URL 中没有查询字符串

handler 包含以下设置,可以通过子标签进行配置:

子标签定义
url重定向位置
type支持的类型:static, dynamic_query_handler, predefined_query_handler, redirect
status与 static 类型一起使用,响应状态码
query_param_name与 dynamic_query_handler 类型一起使用,从 HTTP 请求参数中提取并执行对应于 <query_param_name> 值的内容
query与 predefined_query_handler 类型一起使用,当调用处理程序时执行查询
content_type与 static 类型一起使用,响应内容类型
response_content与 static 类型一起使用,发送给客户端的响应内容,当使用 'file://' 或 'config://' 前缀时,从文件或配置中查找内容并发送给客户端

同时,可以指定 <defaults/> 列表,指定启用所有默认处理程序。

示例:

http_port/https_port

通过 HTTP(s) 连接服务器的端口。

  • 如果指定了 https_port,则必须配置 OpenSSL
  • 如果指定了 http_port,则忽略 OpenSSL 配置,即使已设置。

示例

http_server_default_response

访问 ClickHouse HTTP(s) 服务器时默认显示的页面。 默认值为 "Ok."(末尾带换行符)

示例

访问 http://localhost: http_port 时打开 https://tabix.io/

http_options_response

用于在 OPTIONS HTTP 请求中添加响应头。 OPTIONS 方法用于进行 CORS 预检请求。

有关更多信息,请参见 OPTIONS

示例:

hsts_max_age

HSTS 的过期时间(以秒为单位)。

备注

值为 0 意味着 ClickHouse 禁用 HSTS。如果您设置了一个正数,则将启用 HSTS,max-age 是您设置的数字。

示例

mlock_executable

在启动后执行 mlockall 以降低首次查询延迟,并防止在高 IO 负载下将 clickhouse 可执行文件换出。

备注

建议启用此选项,但会导致启动时间增加几秒。请注意,该设置在没有 "CAP_IPC_LOCK" 权限的情况下将不起作用。

示例

include_from

包含替换文件的路径。支持 XML 和 YAML 格式。

有关更多信息,请参见 "配置文件"。

示例

interserver_listen_host

对可以在 ClickHouse 服务器之间交换数据的主机的限制。 如果使用 Keeper,则同样的限制将适用于不同 Keeper 实例之间的通信。

备注

默认值等于 listen_host 设置。

示例

类型:

默认:

interserver_http_port

在 ClickHouse 服务器之间交换数据的端口。

示例

interserver_http_host

其他服务器可用于访问此服务器的主机名。

如果省略,则以与 hostname -f 命令相同的方式定义。

适用于打破与特定网络接口的依赖。

示例

interserver_https_port

在 ClickHouse 服务器之间通过 HTTPS 交换数据的端口。

示例

interserver_https_host

类似于 interserver_http_host,但是此主机名可通过其他服务器在 HTTPS 上传访此服务器。

示例

在配置所有副本后,将 allow_empty 设置为 false 或移除此设置。这样就强制要求使用新凭据进行身份验证。

要更改现有凭据,请将用户名和密码移至 interserver_http_credentials.old 部分,并用新值更新 userpassword。此时,服务器使用新凭据连接到其他副本,并接受新的或旧的凭据进行连接。

当新的凭据应用于所有副本时,可以删除旧的凭据。

keep_alive_timeout

ClickHouse 等待传入请求的秒数,在关闭连接之前。

示例

max_keep_alive_requests

通过单个保持活动连接的最大请求数,直到 ClickHouse 服务器关闭。

示例

ldap_servers

在此列出 LDAP 服务器及其连接参数:

  • 将它们用作具有指定“ldap”身份验证机制的专用本地用户的身份验证器,而不是“password”
  • 将它们用作远程用户目录。

以下设置可以通过子标签进行配置:

设置描述
hostLDAP 服务器主机名或 IP,此参数是强制性的,不能为空。
portLDAP 服务器端口,如果 enable_tls 设置为 true,则默认值为 636,否则为 389。
bind_dn用于构建绑定的 DN 的模板。结果 DN 将在每次身份验证尝试时通过用实际用户名替换模板中的所有 \{user_name\} 子字符串来构造。
user_dn_detection用于检测所绑定用户的实际用户 DN 的 LDAP 搜索参数部分。这主要用于当服务器为活动目录时用于后的角色映射的搜索过滤器。所得到的用户 DN 将在允许的地方替换 \{user_dn\} 子字符串。默认情况下,用户 DN 被设置为等于绑定 DN,但一旦执行搜索,它将用实际检测到的用户 DN 值更新。
verification_cooldown在成功绑定尝试后的时间段(以秒为单位),此期间假定用户对于所有连续请求均已成功验证,而不需联系 LDAP 服务器。指定 0(默认)以禁用缓存,并强制对每个身份验证请求联系 LDAP 服务器。
enable_tls触发与 LDAP 服务器建立安全连接的标志。指定 no 以纯文本 (ldap://) 协议(不推荐)。指定 yes 以 LDAP 通过 SSL/TLS (ldaps://) 协议(推荐,默认)。指定 starttls 以用于传统 StartTLS 协议(未加密的 (ldap://) 协议,升级为 TLS)。
tls_minimum_protocol_versionSSL/TLS 的最低协议版本。接受的值为:ssl2ssl3tls1.0tls1.1tls1.2(默认)。
tls_require_certSSL/TLS 对等证书验证行为。接受的值为:neverallowtrydemand(默认)。
tls_cert_file证书文件的路径。
tls_key_file证书密钥文件的路径。
tls_ca_cert_fileCA 证书文件的路径。
tls_ca_cert_dir包含 CA 证书的目录的路径。
tls_cipher_suite允许的密码套件(采用 OpenSSL 表示法)。

设置 user_dn_detection 可以通过子标签进行配置:

设置描述
base_dn用于构建 LDAP 搜索的基础 DN 的模板。结果 DN 将在 LDAP 搜索期间通过用实际用户名和绑定 DN 替换模板中的所有 \{user_name\}\{bind_dn\} 子字符串来构造。
scopeLDAP 搜索的范围。接受的值为:baseone_levelchildrensubtree(默认)。
search_filter用于构建 LDAP 搜索的搜索过滤器的模板。结果过滤器将在 LDAP 搜索期间通过用实际用户名、绑定 DN 和基础 DN 替换模板中的所有 \{user_name\}\{bind_dn\}\{base_dn\} 子字符串来构造。注意,特殊字符必须在 XML 中正确转义。

示例:

示例(配置用户 DN 检测的典型 Active Directory 以供进一步角色映射):

listen_host

请求可以来自的主机的限制。如果希望服务器响应所有请求,请指定 ::

示例:

listen_try

如果在尝试监听时 IPv6 或 IPv4 网络不可用,则服务器将不会退出。

示例

listen_reuse_port

允许多个服务器在同一地址:端口上进行监听。请求将由操作系统路由到随机服务器。建议不要启用此设置。

示例

类型:

默认:

listen_backlog

监听套接字的待处理连接的队列大小(回溯)。默认值 4096 与 linux 5.4+) 的值相同。

通常此值不需要更改,因为:

  • 默认值大到足够,
  • 服务器接受客户端连接时有单独的线程。

因此,即使你的 TcpExtListenOverflows(来自 nstat)不为零,并且这个计数器在 ClickHouse 服务器上增长,这也并不意味着需要增加这个值,因为:

  • 通常,如果 4096 不够,这表明某种内部 ClickHouse 扩展问题,因此最好报告一个问题。
  • 这并不意味着服务器可以处理更多的连接(即使它可以,到那时客户端可能已经消失或断开连接)。

示例

logger

日志消息的位置和格式。

描述
level日志级别。可接受值:none(关闭日志),fatalcriticalerrorwarningnoticeinformationdebugtracetest
log日志文件的路径。
errorlog错误日志文件的路径。
size轮换策略:日志文件的最大字节大小。一旦日志文件大小超过此阈值,它将被重命名和归档,并创建一个新的日志文件。
count轮换策略:Clickhouse 保留的历史日志文件的最多数量。
stream_compress使用 LZ4 压缩日志消息。设置为 1true 以启用。
console不将日志消息写入日志文件,而是在控制台中打印它们。设置为 1true 以启用。如果 Clickhouse 不以守护进程模式运行,则默认值为 1,否则为 0
console_log_level控制台输出的日志级别。默认为 level
formatting控制台输出的日志格式。目前,只支持 json
use_syslog也将日志输出转发到 syslog。
syslog_level记录到 syslog 的日志级别。

日志格式说明符

logerrorLog 路径中的文件名支持以下格式说明符用于结果文件名(目录部分不支持它们)。

“示例”列显示在 2023-07-06 18:32:07 时的输出。

说明符描述示例
%%字面意义%%
%n换行符
%t水平制表符
%Y年作为十进制数字,例如 20172023
%y年的最后两位数字作为十进制数字(范围 [00,99])23
%C年的前两位数字作为十进制数字(范围 [00,99])20
%G四位数 ISO 8601 周为基础的年份,即包含指定周的年份。通常仅与 %V 一起使用2023
%g年的最后两位数字 ISO 8601 周为基础的年份,即包含指定周的年份。23
%b缩写的月份名称,例如 Oct(与地区相关)Jul
%h%b 的同义词Jul
%B完整的月份名称,例如 October(与地区相关)July
%m月份作为十进制数字(范围 [01,12])07
%U一年中的周数作为十进制数字(周日是一周的第一天)(范围 [00,53])27
%W一年中的周数作为十进制数字(周一是一周的第一天)(范围 [00,53])27
%VISO 8601 周番号(范围 [01,53])27
%j一年中的天数作为十进制数字(范围 [001,366])187
%d月份中的天数作为零填充的十进制数字(范围 [01,31])。单个数字前面填充零。06
%e月份中的天数作为空格填充的十进制数字(范围 [1,31])。单个数字前面填充空格。&nbsp; 6
%a缩写的星期几名称,例如 Fri(与地区相关)Thu
%A完整的星期几名称,例如 Friday(与地区相关)Thursday
%w星期几作为一个整数,其中星期日为 0(范围 [0-6])4
%u星期几作为十进制数字,其中周一为 1(ISO 8601 格式)(范围 [1-7])4
%H小时作为十进制数字,24 小时制(范围 [00-23])18
%I小时作为十进制数字,12 小时制(范围 [01,12])06
%M分钟作为十进制数字(范围 [00,59])32
%S秒作为十进制数字(范围 [00,60])07
%c标准的日期和时间字符串,例如 Sun Oct 17 04:41:13 2010(与地区相关)Thu Jul 6 18:32:07 2023
%x本地化的日期表示(与地区相关)07/06/23
%X本地化的时间表示,例如 18:40:20 或 6:40:20 PM(与地区相关)18:32:07
%D简短的 MM/DD/YY 日期,相当于 %m/%d/%y07/06/23
%F简短的 YYYY-MM-DD 日期,相当于 %Y-%m-%d2023-07-06
%r本地化的 12 小时制时间(与地区相关)06:32:07 PM
%R相当于 "%H:%M"18:32
%T相当于 "%H:%M:%S"(ISO 8601 时间格式)18:32:07
%p本地化的上午或下午标识(与地区相关)PM
%z以 ISO 8601 格式的 UTC 偏移(例如 -0430),或者如果没有时区信息则没有字符+0800
%Z与地区相关的时区名称或缩写,或如果没有时区信息则没有字符Z AWST

示例

只在控制台中打印日志消息:

按级别覆盖

可以覆盖单个日志名称的日志级别。例如,要静音所有 "Backup" 和 "RBAC" 日志记录器的消息:

syslog

要将日志消息额外写入 syslog:

<syslog> 的键:

描述
addresssyslog 的地址,格式为 host\[:port\]。如果省略,则使用本地守护进程。
hostname要从中发送日志的主机的名称(可选)。
facilitysyslog 设施关键字。必须以大写字母和 "LOG_" 前缀指定,例如 LOG_USERLOG_DAEMONLOG_LOCAL3 等。如果指定了 address,默认值为 LOG_USER,否则为 LOG_DAEMON
format日志消息格式。可能的值:bsdsyslog.

日志格式

您可以指定将在控制台日志中输出的日志格式。目前,仅支持 JSON。

示例

这是一个 JSON 日志输出的示例:

要启用 JSON 日志支持,请使用以下代码片段:

重命名 JSON 日志的键

可以通过更改 <names> 标签内的标签值来修改键名。例如,要将 DATE_TIME 更改为 MY_DATE_TIME,可以使用 <date_time>MY_DATE_TIME</date_time>

省略 JSON 日志的键

可以通过注释掉该属性来省略日志属性。例如,如果您不想让日志打印 query_id,可以注释掉 <query_id> 标签。

send_crash_reports

设置用于通过 Sentry 向 ClickHouse 核心开发团队选择性发送崩溃报告。

特别是在预生产环境中启用此功能是非常受欢迎的。

服务器需要通过 IPv4 访问公共互联网(在撰写时 Sentry 不支持 IPv6),以使该功能正常工作。

键:

描述
enabled布尔标志,用于启用该功能,默认值为 false。设置为 true 以允许发送崩溃报告。
send_logical_errorsLOGICAL_ERROR 类似于 assert,这是 ClickHouse 中的一个错误。此布尔标志启用将此异常发送到 Sentry(默认值:false)。
endpoint您可以覆盖发送崩溃报告的 Sentry 端点 URL。可以是单独的 Sentry 账户或您自托管的 Sentry 实例。使用 Sentry DSN 语法。
anonymize避免将服务器主机名附加到崩溃报告中。
http_proxy配置用于发送崩溃报告的 HTTP 代理。
debug将 Sentry 客户端设置为调试模式。
tmp_path临时崩溃报告状态的文件系统路径。
environment指定 ClickHouse 服务器运行的环境的任意名称。它将在每个崩溃报告中提到。默认值为 testprod,具体取决于 ClickHouse 的版本。

推荐用法

ssh_server

主机密钥的公用部分将在首次连接时写入 SSH 客户端侧的 known_hosts 文件。

主机密钥配置默认情况下是无效的。 取消注释主机密钥配置,并提供相应 SSH 密钥的路径以激活它们:

示例:

tcp_ssh_port

SSH 服务器的端口,允许用户使用嵌入式客户端通过 PTY 连接并以交互方式执行查询。

示例:

storage_configuration

允许多磁盘配置的存储。

存储配置遵循以下结构:

磁盘的配置

disks 的配置遵循以下结构:

上面的子标签定义了 disks 的以下设置:

设置描述
<disk_name_N>磁盘的名称,应是唯一的。
path服务器数据将要存储的路径(datashadow 目录)。应以 / 结束。
keep_free_space_bytes磁盘上保留的空闲空间大小。
备注

磁盘的顺序无关紧要。

策略的配置

上面的子标签定义了 policies 的以下设置:

设置描述
policy_name_N策略的名称。策略名称必须是唯一的。
volume_name_N卷名。卷名必须是唯一的。
disk位于卷内的磁盘。
max_data_part_size_bytes此卷中可以驻留在任何磁盘上的数据块的最大大小。如果合并结果预计块大小超过 max_data_part_size_bytes,该块将写入下一个卷。基本上,此功能允许您在热点(SSD)卷上存储新/小块并在它们达到较大大小时将它们移动到冷(HDD)卷。如果策略只有一个卷,则请勿使用此选项。
move_factor卷上可用的剩余空间的比例。如果空间减少,数据将开始转移到下一个卷(如果有)。在转移过程中,块按大小从大到小(降序)排序,并选择总大小足以满足 move_factor 条件的块,如果所有块的总大小不足,那么将移动所有块。
perform_ttl_move_on_insert插入时禁用移动过期 TTL 的数据。默认情况下(如果启用),如果我们插入的某个数据片段根据生命规则已经过期,它将立即移动到移动规则中指定的卷/磁盘。如果目标卷/磁盘较慢(例如 S3),这可能会显著减慢插入速度。如果禁用,则过期数据部分会写入默认卷,然后立即移动到规则中指定的过期 TTL 卷。
load_balancing磁盘平衡策略,round_robinleast_used
least_used_ttl_ms设置更新所有磁盘上可用空间的超时时间(以毫秒为单位)(0 - 始终更新,-1 - 永不更新,默认值为 60000)。注意,如果磁盘仅由 ClickHouse 使用,并且不会在运行时被文件系统动态调整大小,您可以使用 -1 值。在所有其他情况下,不推荐使用,因为它最终会导致空间分配不正确。
prefer_not_to_merge禁用对本卷数据的合并。注意:这可能是有害的,并可能导致性能下降。当启用此设置时(请勿这样做),在此卷上禁止合并数据(这不好)。这允许您控制 ClickHouse 如何与慢磁盘交互。我们建议根本不使用此选项。
volume_priority定义填充卷的优先级(顺序)。值越小,优先级越高。参数值必须是自然数,并覆盖从 1 到 N 的范围(N 是指定的最大参数值),且没有间隙。

对于 volume_priority

  • 如果所有卷都有此参数,则按指定顺序进行优先级排序。
  • 如果只有 部分 卷具有此参数,则没有此参数的卷的优先级最低。具有此参数的卷按标签值进行优先级排序,其余的优先级由配置文件中相对位置的描述顺序决定。
  • 如果 没有 卷具有此参数,则其顺序由配置文件中描述的顺序决定。
  • 卷的优先级可能不相同。

macros

用于复制表的参数替换。

如果不使用复制表,可以省略。

有关更多信息,请参见创建复制表部分。

示例

replica_group_name

数据库复制的副本组名称。

由复制数据库创建的集群将由同组中的副本组成。 DDL 查询只会等待同组中的副本。

默认值为空。

示例

类型:字符串

默认值: ""

remap_executable

设置使用大页面重新分配机器代码("文本")的内存。

默认值: false

备注

此功能高度实验性。

示例:

max_open_files

最大打开文件数。

备注

我们建议在 macOS 中使用此选项,因为 getrlimit() 函数返回的值不正确。

示例

max_session_timeout

最大会话超时,以秒为单位。

默认值: 3600

示例:

max_table_size_to_drop

删除表的限制。

如果一个 MergeTree 表的大小超过 max_table_size_to_drop(以字节为单位),您无法使用 DROP 查询或 TRUNCATE 查询删除它。

备注

值为 0 意味着您可以无限制地删除所有表。

此设置不需要重新启动 ClickHouse 服务器以应用。禁用限制的另一种方法是创建 <clickhouse-path>/flags/force_drop_table 文件。

示例

默认值: 50 GB。

background_pool_size

设置执行后台合并和变更的线程数,适用于具有 MergeTree 引擎的表。

备注
  • 此设置也可以在 ClickHouse 服务器启动时应用于 default 配置文件设置,以实现向后兼容性。
  • 您只能在运行时增加线程数。
  • 要减少线程数,您必须重新启动服务器。
  • 调整此设置时,您管理 CPU 和磁盘负载。
危险

较小的池大小利用的 CPU 和磁盘资源较少,但是后台进程的进展较慢,可能最终影响查询性能。

在更改它之前,请还查看相关的 MergeTree 设置,例如:

示例

类型:

默认值: 16。

merges_mutations_memory_usage_soft_limit

设置用于执行合并和变更操作的内存限制。 如果 ClickHouse 达到设定的限制,它将不会调度任何新的后台合并或变更操作,但将继续执行已经调度的任务。

备注

值为 0 意味着无限制。

示例

merges_mutations_memory_usage_to_ram_ratio

默认为 merges_mutations_memory_usage_soft_limit 值是通过 memory_amount * merges_mutations_memory_usage_to_ram_ratio 计算得出的。

另见:

默认值: 0.5

async_load_databases

异步加载数据库和表。

  • 如果为 true,所有具有 OrdinaryAtomicReplicated 引擎的非系统数据库将在 ClickHouse 服务器启动后异步加载。请参见 system.asynchronous_loader 表、tables_loader_background_pool_sizetables_loader_foreground_pool_size 服务器设置。任何尝试访问尚未加载的表的查询将等待该表启动。如果负载作业失败,查询将重新抛出错误(而不是在 async_load_databases = false 的情况下关闭整个服务器)。至少有一个查询等待的表将以更高优先级加载。数据库上的 DDL 查询将只等待该数据库启动。同时考虑为总等待查询数设置限制 max_waiting_queries
  • 如果为 false,所有数据库将在服务器启动时加载。

示例

默认值: false

async_load_system_database

系统表的异步加载。如果 system 数据库中有大量日志表和部分数据,这非常有用。与 async_load_databases 设置无关。

  • 如果设置为 true,所有具有 OrdinaryAtomicReplicated 引擎的系统数据库将在 ClickHouse 服务器启动后异步加载。请参见 system.asynchronous_loader 表、tables_loader_background_pool_sizetables_loader_foreground_pool_size 服务器设置。任何尝试访问尚未加载的系统表的查询将等待该表启动。至少有一个查询等待的表将以更高优先级加载。同时考虑设置 max_waiting_queries 限制等待查询的总数。
  • 如果设置为 false,系统数据库将在服务器启动之前加载。

示例

默认值: false

tables_loader_foreground_pool_size

设置在前台池中执行加载作业的线程数。前台池用于在服务器启动之前同步加载表,并用于加载等待中的表。前台池的优先级高于后台池。这意味着在前台池中有作业正在运行时,后台池中不会启动任何作业。

备注

值为 0 意味着将使用所有可用的 CPU。

默认值: 0

tables_loader_background_pool_size

设置在后台池中执行异步加载作业的线程数。后台池用于在服务器启动后异步加载表,以防没有查询在等待该表。如果有许多表,建议保持后台池中的线程数较低。这将保留 CPU 资源以便于并发查询执行。

备注

值为 0 意味着将使用所有可用的 CPU。

默认值: 0

merge_tree

用于 MergeTree 表的微调。

有关更多信息,请参见 MergeTreeSettings.h 头文件。

示例

metric_log

默认情况下,此功能被禁用。

启用

要手动打开指标历史收集 system.metric_log,请创建 /etc/clickhouse-server/config.d/metric_log.xml,内容如下:

禁用

要禁用 metric_log 设置,您应该创建以下文件 /etc/clickhouse-server/config.d/disable_metric_log.xml,内容如下:

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

latency_log

默认情况下,此功能被禁用。

启用

要手动打开延迟历史收集 system.latency_log,请创建 /etc/clickhouse-server/config.d/latency_log.xml,内容如下:

禁用

要禁用 latency_log 设置,您应该创建以下文件 /etc/clickhouse-server/config.d/disable_latency_log.xml,内容如下:

replicated_merge_tree

用于 ReplicatedMergeTree 表的微调。此设置的优先级更高。

有关更多信息,请参见 MergeTreeSettings.h 头文件。

示例

opentelemetry_span_log

opentelemetry_span_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

示例:

part_log

MergeTree 相关的事件的日志。例如,添加或合并数据。您可以使用日志来模拟合并算法并比较其特性。您可以可视化合并过程。

查询被记录在 system.part_log 表中,而不是在单独的文件中。您可以在 table 参数中配置此表的名称(见下文)。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

示例

path

数据目录的路径。

备注

尾部斜杠是必需的。

示例

processors_profile_log

processors_profile_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

默认设置为:

Prometheus

暴露指标数据以供 Prometheus 抓取。

设置:

  • endpoint – Prometheus 服务器抓取指标的 HTTP 端点。从 '/' 开始。
  • portendpoint 的端口。
  • metrics – 从 system.metrics 表中暴露指标。
  • events – 从 system.events 表中暴露指标。
  • asynchronous_metrics – 从 system.asynchronous_metrics 表中暴露当前指标值。
  • errors - 暴露自上次服务器重启以来发生的错误数量,按错误代码分类。这些信息也可以从 system.errors 获取。

示例

检查(将 127.0.0.1 替换为您的 ClickHouse 服务器的 IP 地址或主机名):

query_log

用于记录通过 log_queries=1 设置接收的查询的设置。

查询记录在 system.query_log 表中,而不是在单独的文件中。您可以在 table 参数中更改表的名称(见下文)。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

如果表不存在,ClickHouse 将创建它。如果在更新 ClickHouse 服务器时查询日志的结构发生变化,旧结构的表将被重命名,同时自动创建新表。

示例

query_metric_log

默认情况下禁用。

启用

要手动开启指标历史记录收集 system.query_metric_log,请创建 /etc/clickhouse-server/config.d/query_metric_log.xml,内容如下:

禁用

要禁用 query_metric_log 设置,您应该创建以下文件 /etc/clickhouse-server/config.d/disable_query_metric_log.xml,内容如下:

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

query_cache

查询缓存 配置。

可用设置如下:

设置描述默认值
max_size_in_bytes最大缓存大小(以字节为单位)。0 意味着查询缓存被禁用。1073741824
max_entries缓存中存储的 SELECT 查询结果的最大数量。1024
max_entry_size_in_bytes可以在缓存中保存的 SELECT 查询结果的最大字节大小。1048576
max_entry_size_in_rows可以在缓存中保存的 SELECT 查询结果的最大行数。30000000
备注
  • 更改的设置将立即生效。
  • 查询缓存的数据是在 DRAM 中分配的。如果内存不足,请确保为 max_size_in_bytes 设置一个较小的值或完全禁用查询缓存。

示例

query_thread_log

用于记录通过 log_query_threads=1 设置接收的查询线程的设置。

查询记录在 system.query_thread_log 表中,而不是在单独的文件中。您可以在 table 参数中更改表的名称(见下文)。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

如果表不存在,ClickHouse 将创建它。如果在更新 ClickHouse 服务器时查询线程日志的结构发生变化,旧结构的表将被重命名,同时自动创建新表。

示例

query_views_log

用于记录由通过 log_query_views=1 设置接收的查询所依赖的视图(实时视图、物化视图等)的设置。

查询记录在 system.query_views_log 表中,而不是在单独的文件中。您可以在 table 参数中更改表的名称(见下文)。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

如果表不存在,ClickHouse 将创建它。如果在更新 ClickHouse 服务器时查询视图日志的结构发生变化,旧结构的表将被重命名,同时自动创建新表。

示例

text_log

用于记录文本消息的 text_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

此外:

设置描述默认值
level存储在表中的最大消息级别(默认值为 Trace)。Trace

示例

trace_log

用于记录 trace_log 系统表操作的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

默认服务器配置文件 config.xml 包含以下设置节:

asynchronous_insert_log

用于记录异步插入的 asynchronous_insert_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

示例

crash_log

用于记录 crash_log 系统表操作的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

默认服务器配置文件 config.xml 包含以下设置节:

custom_cached_disks_base_directory

此设置指定自定义(从 SQL 创建的)缓存磁盘的缓存路径。custom_cached_disks_base_directory 在自定义磁盘上优先级高于 filesystem_caches_path(在 filesystem_caches_path.xml 中找到),如果前者不存在则使用后者。文件系统缓存设置路径必须位于该目录内,否则会抛出异常,阻止磁盘被创建。

备注

这不会影响在较旧版本中创建的磁盘,因其服务器进行了升级。在这种情况下,不会抛出异常,以允许服务器顺利启动。

示例:

backup_log

用于记录 BACKUPRESTORE 操作的 backup_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

示例

blog_storage_log

用于 blob_storage_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

示例:

配置字段

设置描述
name规则的名称(可选)
regexp兼容 RE2 的正则表达式(必需)
replace替换敏感数据的字符串(可选,默认 - 六个星号)

掩码规则应用于整个查询(以防止通过格式错误/无法解析的查询泄漏敏感数据)。

system.events 表有一个计数器 QueryMaskingRulesMatch,表示查询掩码规则匹配的总数。

对于分布式查询,每个服务器必须单独配置,否则,传递给其他节点的子查询将不带掩码存储。

remote_servers

用于配置 Distributed 表引擎和 cluster 表函数使用的集群。

示例

有关 incl 属性值,请参见 “配置文件” 部分。

另见

remote_url_allow_hosts

允许在与 URL 相关的存储引擎和表函数中使用的主机列表。

添加 <host> XML 标签时:

  • 应该与 URL 中完全相同,因为在 DNS 解析之前会检查该名称。例如:<host>clickhouse.com</host>
  • 如果在 URL 中明确指定了端口,则会整体检查 host:port。例如:<host>clickhouse.com:80</host>
  • 如果未指定端口,则允许该主机的任何端口。例如:如果指定了 <host>clickhouse.com</host>,则允许 clickhouse.com:20(FTP),clickhouse.com:80(HTTP),clickhouse.com:443(HTTPS)等。
  • 如果主机指定为 IP 地址,则会按 URL 中指定的进行检查。例如:[2a02:6b8:a::a]
  • 如果存在重定向并且启用了重定向支持,则会检查每个重定向(location 字段)。

例如:

timezone

服务器的时区。

以 IANA 标识符的形式指定 UTC 时区或地理位置(例如,Africa/Abidjan)。

时区对于在输出到文本格式(打印到屏幕或文件)时在字符串和日期时间格式之间的转换是必要的,以及在从字符串获取日期时间时。此外,如果函数未收到输入参数中的时区,则在处理时间和日期的函数中也会使用时区。

示例

另见

tcp_port

与客户端通过 TCP 协议通信的端口。

示例

tcp_port_secure

与客户端进行安全通信的 TCP 端口。与 OpenSSL 设置一起使用。

默认值

mysql_port

与客户端通过 MySQL 协议通信的端口。

备注
  • 正整数指定要监听的端口号
  • 空值用于禁用通过 MySQL 协议与客户端的通信。

示例

postgresql_port

与客户端通过 PostgreSQL 协议通信的端口。

备注
  • 正整数指定要监听的端口号
  • 空值用于禁用通过 MySQL 协议与客户端的通信。

示例

tmp_path

本地文件系统中存储大型查询的临时数据的路径。

备注
  • 只能使用一个选项来配置临时数据存储:tmp_pathtmp_policytemporary_data_in_cache
  • 必须带有尾部斜杠。

示例

url_scheme_mappers

用于将缩短或符号 URL 前缀转换为完整 URL 的配置。

示例:

user_files_path

用户文件的目录。用于表函数 file()fileCluster()

示例

user_scripts_path

用户脚本文件的目录。用于可执行用户自定义函数 Executable User Defined Functions

示例

类型:

默认:

user_defined_path

用户自定义文件的目录。用于 SQL 用户自定义函数 SQL User Defined Functions

示例

users_config

包含以下内容的文件路径:

  • 用户配置。
  • 访问权限。
  • 设置配置文件。
  • 配额设置。

示例

validate_tcp_client_information

确定在接收到查询数据包时是否启用客户端信息验证。

默认情况下,它是 false

access_control_improvements

访问控制系统的可选改进设置。

设置描述默认
users_without_row_policies_can_read_rows设置没有权限行策略的用户是否仍然可以使用 SELECT 查询读取行。例如,如果有两个用户 A 和 B 并且仅为 A 定义了行策略,则如果此设置为 true,用户 B 将看到所有行。如果此设置为 false,则用户 B 将看不到任何行。true
on_cluster_queries_require_cluster_grant设置 ON CLUSTER 查询是否需要 CLUSTER 授权。true
select_from_system_db_requires_grant设置 SELECT * FROM system.<table> 是否需要任何授权,并且可以由任何用户执行。如果设置为 true,则该查询需要 GRANT SELECT ON system.<table>,与非系统表相同。例外:一些系统表(tablescolumnsdatabases 和一些常量表如 onecontributors)仍然对所有人可访问;如果授予了 SHOW 权限(例如 SHOW USERS),则相应的系统表(即 system.users)将可访问。true
select_from_information_schema_requires_grant设置 SELECT * FROM information_schema.<table> 是否需要任何授权,并且可以由任何用户执行。如果设置为 true,则该查询需要 GRANT SELECT ON information_schema.<table>,与普通表相同。true
settings_constraints_replace_previous设置某个设置的配置文件中的约束是否将取消对该设置的先前约束(在其他配置文件中定义)的操作,包括未被新约束设置的字段。还启用 changeable_in_readonly 约束类型。true
table_engines_require_grant设置使用特定表引擎创建表时是否需要授权。false
role_cache_expiration_time_seconds设置角色在角色缓存中存储的最后访问时间以来的秒数。600

示例:

s3queue_log

s3queue_log 系统表的设置。

以下设置可以通过子标签进行配置:

设置描述默认值备注
database数据库的名称。
table系统表的名称。
engineMergeTree 引擎定义 用于系统表。如果定义了 partition_byorder_by,则无法使用。如果未指定,默认选择 MergeTree
partition_by自定义分区键 用于系统表。如果为系统表指定了 engine,则应在 'engine' 内直接指定 partition_by 参数。
ttl指定表的 生存时间 (TTL)如果为系统表指定了 engine,则应在 'engine' 内直接指定 ttl 参数。
order_by自定义排序键 用于系统表。如果定义了 engine 则无法使用。如果为系统表指定了 engine,则应在 'engine' 内直接指定 order_by 参数。
storage_policy用于表的存储策略名称(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 storage_policy 参数。
settings控制 MergeTree 行为的 附加参数(可选)。如果为系统表指定了 engine,则应在 'engine' 内直接指定 settings 参数。
flush_interval_milliseconds从内存缓冲区刷新数据到表中的间隔。7500
max_size_rows日志的最大行数。当未刷新日志的数量达到最大值时,日志将被转储到磁盘。1048576
reserved_size_rows日志的预分配内存行数。8192
buffer_size_rows_flush_threshold行数阈值。如果达到阈值,则在后台启动日志刷新到磁盘。max_size_rows / 2
flush_on_crash设置在崩溃时是否应将日志转储到磁盘。false

默认设置为:

wait_dictionaries_load_at_startup

此设置允许指定 dictionaries_lazy_loadfalse 时的行为。 (如果 dictionaries_lazy_loadtrue,则此设置不影响任何内容。)

如果 wait_dictionaries_load_at_startupfalse,则服务器将在启动时开始加载所有字典,并将并行接收连接。 当查询第一次使用某个字典时,如果字典尚未加载,则查询将等待直到字典加载完成。 将 wait_dictionaries_load_at_startup 设置为 false 可以使 ClickHouse 启动更快,但是某些查询可能会运行得更慢 (因为它们将不得不等待某些字典被加载)。

如果 wait_dictionaries_load_at_startuptrue,那么服务器将在启动时等待 所有字典完成加载(成功或失败)后再接收任何连接。

示例

默认:true

zookeeper

包含允许 ClickHouse 与 ZooKeeper 集群交互的设置。 ClickHouse 在使用复制表时使用 ZooKeeper 存储副本的元数据。如果未使用复制表,则可以省略此参数部分。

可以通过子标签配置以下设置:

设置描述
nodeZooKeeper 端点。您可以设置多个端点。例如:<node index="1"><host>example_host</host><port>2181</port></node>index 属性指定尝试连接到 ZooKeeper 集群时的节点顺序。
session_timeout_ms客户端会话的最大超时(以毫秒为单位)。
operation_timeout_ms单个操作的最大超时(以毫秒为单位)。
root(可选)ClickHouse 服务器使用的 znodes 根的 znode。
fallback_session_lifetime.min (可选)当主节点不可用时,备用节点的 zookeeper 会话的最小存活时间(负载均衡)。以秒为单位设置。默认值:3 小时。
fallback_session_lifetime.max (可选)当主节点不可用时,备用节点的 zookeeper 会话的最大存活时间(负载均衡)。以秒为单位设置。默认值:6 小时。
identity(可选)访问请求的 znodes 时 ZooKeeper 要求的用户和密码。
use_compression(可选)如果设置为 true,则启用 Keeper 协议中的压缩。

还有 zookeeper_load_balancing 设置(可选),可以让您选择 ZooKeeper 节点选择的算法:

算法名称描述
random随机选择一个 ZooKeeper 节点。
in_order选择第一个 ZooKeeper 节点,如果不可用则选择第二个,以此类推。
nearest_hostname选择与服务器主机名最相似的 ZooKeeper 节点,主机名与名称前缀进行比较。
hostname_levenshtein_distance与 nearest_hostname 类似,但以 levenshtein 距离的方式比较主机名。
first_or_random选择第一个 ZooKeeper 节点,如果不可用,则随机选择剩余的一个 ZooKeeper 节点。
round_robin选择第一个 ZooKeeper 节点,如果重新连接,则选择下一个。

示例配置

另见

use_minimalistic_part_header_in_zookeeper

ZooKeeper 中数据部分头的存储方式。此设置仅适用于 MergeTree 家族。可以指定:

config.xml 文件的 merge_tree 部分全局

ClickHouse 将对此服务器上的所有表使用此设置。您可以随时更改设置。已有表在设置更改时会改变其行为。

对于每个表

创建表时,指定相应的 引擎设置。即使全局设置更改,带有此设置的现有表的行为也不会改变。

可选值

  • 0 — 功能关闭。
  • 1 — 功能开启。

如果 use_minimalistic_part_header_in_zookeeper = 1,则 复制 表使用单个 znode 紧凑存储数据部分的头。如果表包含许多列,则此存储方法显著减少存储在 ZooKeeper 中的数据量。

备注

应用 use_minimalistic_part_header_in_zookeeper = 1 后,您无法将 ClickHouse 服务器降级到不支持此设置的版本。在集群中的服务器上升级 ClickHouse 时请小心。不要一次升级所有服务器。最好在测试环境中测试 ClickHouse 的新版本,或者在集群中的少数服务器上进行升级。

已经使用此设置存储的数据部分头无法恢复到其先前(非紧凑)表示。

类型:UInt8

默认:0

distributed_ddl

管理在集群上执行 分布式 ddl 查询CREATEDROPALTERRENAME)。 仅在启用 ZooKeeper 的情况下工作。

<distributed_ddl> 中的可配置设置包括:

设置描述默认值
pathDDL 查询的 task_queue 在 Keeper 中的路径
profile用于执行 DDL 查询的配置文件
pool_size可以同时运行多少个 ON CLUSTER 查询
max_tasks_in_queue队列中可以包含的最大任务数1,000
task_max_lifetime如果节点的年龄超过该值,则删除节点。7 * 24 * 60 * 60(一周的秒数)
cleanup_delay_period如果最后一次清理距离现在没有超过 cleanup_delay_period 秒,在接收到新的节点事件后开始清理。60

示例

access_control_path

ClickHouse 服务器存储通过 SQL 命令创建的用户和角色配置的路径。

另见

类型:字符串

默认:/var/lib/clickhouse/access/

allow_plaintext_password

设置是否允许明文密码类型(不安全)。

默认:1(允许 authType plaintext_password)

allow_no_password

设置是否允许不安全的无密码密码类型。

默认:1(允许 authType no_password)

allow_implicit_no_password

禁止在未明确指定 'IDENTIFIED WITH no_password' 的情况下创建无密码用户。

默认:1

default_session_timeout

默认会话超时时间(以秒为单位)。

默认:60

default_password_type

设置在像 CREATE USER u IDENTIFIED BY 'p' 的查询中自动设置的密码类型。

接受的值为:

  • plaintext_password
  • sha256_password
  • double_sha1_password
  • bcrypt_password

user_directories

配置文件的部分,包含以下设置:

  • 预定义用户的配置文件路径。
  • 通过 SQL 命令创建的用户存储的文件夹路径。
  • 通过 SQL 命令创建的用户存储和复制的 ZooKeeper 节点路径(实验性)。

如果指定了此部分,则将不会使用 users_configaccess_control_path 的路径。

user_directories 部分可以包含任意数量的项,项的顺序表示其优先级(项越高优先级越高)。

示例

用户、角色、行策略、配额和配置文件也可以存储在 ZooKeeper 中:

您还可以定义 memory 部分——表示仅在内存中存储信息,不写入磁盘,以及 ldap 部分——表示在 LDAP 服务器上存储信息。

要将 LDAP 服务器作为未在本地定义的用户的远程用户目录,请定义一个具有以下设置的单一 ldap 部分:

设置描述
serverldap_servers 配置部分中定义的一个 LDAP 服务器名称。此参数是必需的,不能为空。
roles包含将被分配给从 LDAP 服务器检索到的每个用户的本地定义角色的列表的部分。如果未指定角色,用户在身份验证后将无法执行任何操作。如果在身份验证时列出的任何角色未在本地定义,则身份验证尝试将失败,仿佛提供的密码不正确。

示例

top_level_domains_list

定义要添加的自定义顶级域的列表,其中每个条目的格式为 <name>/path/to/file</name>

例如:

另见:

total_memory_profiler_step

设置每个峰值分配步骤的堆栈跟踪内存大小(以字节为单位)。数据存储在 system.trace_log 系统表中,query_id 等于空字符串。

默认值: 4194304

total_memory_tracker_sample_probability

允许收集随机分配和取消分配,并以指定的概率将它们写入 system.trace_log 系统表中,trace_type 等于 MemorySample。该概率适用于每次分配或取消分配,而不管分配的大小。请注意,只有当未跟踪的内存量超过未跟踪内存限制(默认值为 4 MiB)时,才会进行采样。如果 total_memory_profiler_step 降低,则可以降低该值。您可以将 total_memory_profiler_step 设置为 1 以获得额外精细的采样。

可能的值:

  • 正整数。
  • 0 — 禁用在 system.trace_log 系统表中写入随机分配和取消分配。

默认值: 0

compiled_expression_cache_size

设置 已编译表达式 的缓存大小(以字节为单位)。

默认值: 134217728

compiled_expression_cache_elements_size

设置 已编译表达式 的元素缓存大小。

默认值: 10000

display_secrets_in_show_and_select

启用或禁用在 SHOWSELECT 查询中显示表、数据库、表函数和字典的秘密。

希望查看秘密的用户还必须开启 format_display_secrets_in_show_and_select 格式设置 和拥有 displaySecretsInShowAndSelect 权限。

可能的值:

  • 0 — 禁用。
  • 1 — 启用。

默认值: 0

proxy

为 HTTP 和 HTTPS 请求定义代理服务器,当前支持 S3 存储、S3 表函数和 URL 函数。

定义代理服务器有三种方式:

  • 环境变量
  • 代理列表
  • 远程代理解析器。

使用 no_proxy 也支持为特定主机绕过代理服务器。

环境变量

http_proxyhttps_proxy 环境变量允许您为给定协议指定代理服务器。如果您在系统中设置,该代理服务器应可以无缝工作。

如果给定协议只有一个代理服务器并且该代理服务器不变,这是最简单的方法。

代理列表

这种方法允许您为一个协议指定一个或多个代理服务器。如果定义了多个代理服务器,则 ClickHouse 将以轮询的方式使用不同的代理,平衡服务器之间的负载。如果为一个协议有多个代理服务器且代理服务器列表不变,这是最简单的方法。

配置模板

在以下选项卡中选择一个父字段以查看其子项:

字段描述
<http>一个或多个 HTTP 代理的列表
<https>一个或多个 HTTPS 代理的列表

远程代理解析器

代理服务器可能会动态变化。在这种情况下,您可以定义解析器的端点。ClickHouse 向该端点发送一个空的 GET 请求,远程解析器应返回代理主机。ClickHouse 将使用以下模板形成代理 URI:\{proxy_scheme\}://\{proxy_host\}:{proxy_port}

配置模板

在以下选项卡中选择一个父字段以查看其子项:

字段描述
<http>一个或多个解析器的列表*
<https>一个或多个解析器的列表*

优先级

代理设置按以下顺序确定:

顺序设置
1.远程代理解析器
2.代理列表
3.环境变量

ClickHouse 将为请求协议检查最高优先级的解析器类型。如果未定义,将检查下一个优先级的解析器类型,直到检索环境解析器。这也允许可以混合使用解析器类型。

disable_tunneling_for_https_requests_over_http_proxy

默认情况下,使用隧道(即 HTTP CONNECT)通过 HTTP 代理发起 HTTPS 请求。该设置可用于禁用它。

no_proxy

默认情况下,所有请求都将通过代理。为了在特定主机上禁用该功能,必须设置 no_proxy 变量。 可以在 <proxy> 子句内为列表和远程解析器设置,并作为环境变量用于环境解析器。 它支持 IP 地址、域、子域以及用于完全绕过的 '*' 通配符。前导点会被移除,就像 curl 一样。

示例

以下配置绕过对 clickhouse.cloud 及其所有子域(例如 auth.clickhouse.cloud)的代理请求。 对于 GitLab 也是如此,尽管它有前导点。gitlab.comabout.gitlab.com 都会绕过代理。

max_materialized_views_count_for_table

附加到表的物化视图数量限制。

备注

此处仅考虑直接依赖的视图,创建一个视图在另一个视图上不被视为依赖。

默认值: 0

format_alter_operations_with_parentheses

如果设置为 true,则在格式化查询中,修改操作将被括起来。这使得格式化的修改查询解析起来不那么模糊。

类型: Bool

默认值: 0

ignore_empty_sql_security_in_create_view_query

如果为 true,ClickHouse 不会在 CREATE VIEW 查询中为空的 SQL 安全声明写入默认值。

备注

此设置在迁移期间是必要的,在 24.4 版本后将变得过时。

类型: Bool

默认值: 1

merge_workload

用于调节资源在合并和其他工作负载之间的利用和共享。指定的值用作所有后台合并的 workload 设置值。可以被合并树设置覆盖。

类型: String

默认值: default

另见

mutation_workload

用于调节资源在变更和其他工作负载之间的利用和共享。指定的值用作所有后台变更的 workload 设置值。可以被合并树设置覆盖。

另见

类型: String

默认值: default

throw_on_unknown_workload

定义对未知工作负载访问时的行为,查询设置为 'workload'。

  • 如果为 true,将从尝试访问未知工作负载的查询中抛出 RESOURCE_ACCESS_DENIED 异常。这有助于在确定工作负载层级并包含工作负载默认值后,强制所有查询进行资源调度。
  • 如果为 false(默认值),提供给指向未知工作负载的查询的 'workload' 设置将不进行资源调度,提供无限制访问。这在设置工作负载层次结构、添加工作负载默认值之前是重要的。

另见

类型: String

默认值: false

示例

workload_path

用于存储所有 CREATE WORKLOADCREATE RESOURCE 查询的目录。默认使用服务器工作目录下的 /workload/ 文件夹。

示例

另见

workload_zookeeper_path

ZooKeeper 节点的路径,用作所有 CREATE WORKLOADCREATE RESOURCE 查询的存储。为了保证一致性,所有 SQL 定义都存储为此单个 znode 的值。默认情况下不使用 ZooKeeper,定义存储在 磁盘 上。

示例

另见

use_legacy_mongodb_integration

使用遗留的 MongoDB 集成实现。已弃用。

类型: Bool

默认值: true

max_authentication_methods_per_user

用户可以使用或更改的身份验证方法的最大数量。 更改此设置不会影响现有用户。如果创建/更改与身份验证相关的查询超过此设置中指定的限制,则会失败。 非身份验证的创建/更改查询将成功。

备注

值为 0 表示无限制。

类型: UInt64

默认值: 100

allow_feature_tier

控制用户是否可以更改与不同功能层相关的设置。

  • 0 - 允许对任何设置进行更改(实验性、测试、生产)。
  • 1 - 仅允许对测试和生产功能设置进行更改。拒绝对实验性设置的更改。
  • 2 - 仅允许对生产设置进行更改。拒绝对实验性或测试设置的更改。

这相当于对所有 EXPERIMENTAL / BETA 功能施加了只读约束。

备注

值为 0 表示可以更改所有设置。

类型: UInt32

默认值: 0