服务器设置
本节包含服务器设置的描述。这些是不能在会话或查询级别更改的设置。
有关 ClickHouse 中配置文件的更多信息,请参见"配置文件"。
其他设置描述在""设置""节中。在学习设置之前,建议您先阅读配置文件部分,并注意替换的使用(incl 和 optional 属性)。
abort_on_logical_error
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>,就像对非系统表一样。例外情况:一些系统表(如 tables、columns、databases 和一些常量表如 one、contributors)仍然可以被所有人访问;如果授予了 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 |
示例:
access_control_path
ClickHouse 服务器存储通过 SQL 命令创建的用户和角色配置的文件夹路径。
另见
aggregate_function_group_array_action_when_limit_is_reached
throw 异常或 discard 额外值。
aggregate_function_group_array_max_element_size
allow_feature_tier
控制用户是否可以更改与不同功能级别有关的设置。
0- 允许对任何设置进行更改(实验、测试、生产)。1- 仅允许对测试和生产功能设置进行更改。对实验性设置的更改被拒绝。2- 仅允许对生产设置进行更改。对实验或测试设置的更改被拒绝。
这相当于对所有 EXPERIMENTAL / BETA 功能设置只读约束。
值为 0 意味着可以更改所有设置。
allow_implicit_no_password
禁止创建没有密码的用户,除非显式指定 'IDENTIFIED WITH no_password'。
allow_no_password
设置是否允许不安全的无密码类型。
allow_plaintext_password
设置是否允许明文密码类型(不安全)。
allow_use_jemalloc_memory
allowed_disks_for_table_engines
允许与 Iceberg 配合使用的磁盘列表。
async_insert_queue_flush_on_shutdown
async_insert_threads
async_load_databases
异步加载数据库和表。
- 如果为
true,在 ClickHouse 服务器启动后,所有具有Ordinary、Atomic和Replicated引擎的非系统数据库将异步加载。请参阅system.asynchronous_loader表、tables_loader_background_pool_size和tables_loader_foreground_pool_size服务器设置。任何尝试访问尚未加载的表的查询将会等待确切的表启动。如果加载作业失败,查询将重新抛出错误(而不是在async_load_databases = false的情况下关闭整个服务器)。至少有一个查询在等待的表将以更高的优先级加载。对数据库的 DDL 查询将等待确切的数据库启动。还可以考虑设置max_waiting_queries的限制以限制总等待查询的数量。 - 如果为
false,则在服务器启动时加载所有数据库。
示例
async_load_system_database
异步加载系统表。如果 system 数据库中有大量日志表和分片,这将很有帮助。独立于 async_load_databases 设置。
- 如果设置为
true,在 ClickHouse 服务器启动后,所有具有Ordinary、Atomic和Replicated引擎的系统数据库将异步加载。请参见system.asynchronous_loader表、tables_loader_background_pool_size和tables_loader_foreground_pool_size服务器设置。任何尝试访问尚未加载的系统表的查询将会等待确切的表启动。至少一个查询在等待的表将以更高的优先级加载。还可以考虑设置max_waiting_queries设置以限制总等待查询的数量。 - 如果设置为
false,在服务器启动之前加载系统数据库。
示例
asynchronous_heavy_metrics_update_period_s
asynchronous_insert_log
asynchronous_insert_log 系统表的设置,用于日志记录异步插入。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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_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 | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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_enable_heavy_metrics
asynchronous_metrics_update_period_s
auth_use_forwarded_address
对通过代理连接的客户端使用源地址进行身份验证。
该设置应小心使用,因为转发地址很容易被伪造 - 直接访问接受此类身份验证的服务器是不应当的,而应仅通过可信的代理访问。
background_buffer_flush_schedule_pool_size
background_common_pool_size
background_distributed_schedule_pool_size
background_fetches_pool_size
background_merges_mutations_concurrency_ratio
设置线程数与可以并发执行的后台合并和变更数量之间的比率。
例如,如果此比率等于 2,并且 background_pool_size 设置为 16,则 ClickHouse 可以同时执行 32 次后台合并。这是可能的,因为后台操作可以被挂起和推迟。这是为了给小型合并更高的执行优先级。
您只能在运行时增加此比率。要降低它,必须重新启动服务器。
与 background_pool_size 设置相同,background_merges_mutations_concurrency_ratio 可以从 default 配置文件中应用,以保持向后兼容。
background_merges_mutations_scheduling_policy
对后台合并和变更的调度执行策略。可能的值为:round_robin 和 shortest_task_first。
算法用于选择由后台线程池执行的下一个合并或变更。策略可以在运行时更改,而无需重新启动服务器。可以从 default 配置文件中应用,以保持向后兼容。
可能的值:
round_robin- 每个并发合并和变更以轮换顺序执行,以确保不会饿死操作。较小的合并通常会比较大的合并完成得更快,因为它们需要合并的块较少。shortest_task_first- 始终执行较小的合并或变更。合并和变更根据其结果大小分配优先级。较小的合并优先于较大的合并。此策略可确保小部分的快速合并,但可能导致严重的分区中较大合并的长期饥饿。
background_message_broker_schedule_pool_size
background_move_pool_size
background_pool_size
设置用于执行 MergeTree 引擎表的后台合并和变更的线程数。
- 此设置也可以在服务器启动时从
default配置文件计算,以确保向后兼容。 - 您只能在运行时增加线程数。
- 要降低线程数,必须重新启动服务器。
- 通过调整此设置,您可以管理 CPU 和磁盘负载。
较小的池大小会减少 CPU 和磁盘资源的使用,但后台进程的推进速度较慢,这可能最终影响查询性能。
在更改之前,请还查看与合并树相关的其他设置,例如:
number_of_free_entries_in_pool_to_lower_max_size_of_merge。number_of_free_entries_in_pool_to_execute_mutation。number_of_free_entries_in_pool_to_execute_optimize_entire_partition
示例
background_schedule_pool_max_parallel_tasks_per_type_ratio
background_schedule_pool_size
backup_log
用于backup_log 系统表的设置,用于记录 BACKUP 和 RESTORE 操作。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
示例
backup_threads
BACKUP 请求的最大线程数。
backups
执行 BACKUP TO File() 时使用的备份设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 |
|---|---|---|
allowed_path | 使用 File() 备份的路径。此设置必须设置才能使用 File。路径可以相对于实例目录,或者可以是绝对路径。 | true |
remove_backup_files_after_failure | 如果 BACKUP 命令失败,ClickHouse 将尝试删除已复制到备份中的文件,或者在失败之前,它将保持已复制的文件不变。 | true |
默认情况下,此设置配置为:
backups_io_thread_pool_queue_size
可以在备份 IO 线程池中调度的最大作业数。由于当前 S3 备份逻辑,建议将此队列保持为无限制。
值 0(默认)意味着无限制。
bcrypt_workfactor
使用 Bcrypt 算法 的 bcrypt_password 身份验证类型的工作因子。工作因子定义计算哈希和验证密码所需的计算量和时间。
对于高频身份验证的应用程序,请考虑使用其他身份验证方法,因为 bcrypt 在更高的工作因子下的计算开销。
blob_storage_log
blob_storage_log 系统表的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
示例:
builtin_dictionaries_reload_interval
重载内置字典的时间间隔(以秒为单位)。
ClickHouse 每 x 秒重新加载内置字典。这使得在不重新启动服务器的情况下"动态"编辑字典成为可能。
示例
cache_size_to_ram_max_ratio
cannot_allocate_thread_fault_injection_probability
cgroups_memory_usage_observer_wait_time
服务器的最大允许内存消耗在 cgroups 中的阈值调整的持续时间(以秒为单位)。
要禁用 cgroup 观察者,请将此值设置为 0。
compiled_expression_cache_elements_size
compiled_expression_cache_size
compression
适用于 MergeTree 引擎表的数据压缩设置。
建议在您刚开始使用 ClickHouse 时不要更改此设置。
配置模板:
<case> 字段:
min_part_size– 数据部分的最小大小。min_part_size_ratio– 数据部分大小与表大小的比率。method– 压缩方法。可接受的值:lz4、lz4hc、zstd、deflate_qpl。level– 压缩级别。请参见 Codecs。
您可以配置多个 <case> 部分。
满足条件时的操作:
- 如果数据部分符合设置的条件,ClickHouse 将使用指定的压缩方法。
- 如果数据部分符合多个条件集,ClickHouse 将使用第一个匹配的条件集。
如果数据部分不满足条件,ClickHouse 将使用 lz4 压缩。
示例
concurrent_threads_scheduler
对 concurrent_threads_soft_limit_num 和 concurrent_threads_soft_limit_ratio_to_cores 指定的 CPU 槽调度的执行策略。用于治理在并发查询中分配有限数量的 CPU 槽的算法。调度程序可以在运行时更改,而不需要重新启动服务器。
可能的值:
round_robin- 每个设置use_concurrency_control= 1 的查询分配最多max_threads个 CPU 槽。每个线程一个槽。如果出现争用,CPU 槽以轮换方式授予查询。请注意,第一个槽是无条件授予的,这可能导致不公平和增加具有高max_threads的查询的延迟。fair_round_robin- 每个设置use_concurrency_control= 1 的查询分配最多max_threads - 1个 CPU 槽。此轮换的变体不要求每个查询的第一个线程占用一个 CPU 槽。这样,具有max_threads= 1 的查询不需要任何槽,并且无法不公平地分配所有槽。没有槽是无条件授予的。
concurrent_threads_soft_limit_num
允许所有查询运行的最大查询处理线程数,不包括从远程服务器获取数据的线程。这不是硬限制。如果达到该限制,查询仍将获得至少一个线程来运行。查询可以在执行过程中升级到所需的线程数,如果有更多线程可用。
值为 0 (默认值)表示无限制。
concurrent_threads_soft_limit_ratio_to_cores
concurrent_threads_soft_limit_num 相同,但与核心的比率。
config_reload_interval_ms
core_dump
配置 core dump 文件大小的软限制。
硬限制通过系统工具配置。
示例
cpu_slot_preemption
定义 CPU 资源(主线程和工作线程)的工作负载调度方式。
- 如果为
true(推荐),根据实际消耗的 CPU 时间进行计算。将为竞争工作负载分配公平数量的 CPU 时间。为有限时间分配的插槽在到期后需要重新请求。如果 CPU 资源超载,请求插槽可能会阻塞线程执行,即可能发生抢占。这确保了 CPU 时间的公平性。 - 如果为
false(默认),则根据分配的 CPU 槽数量进行计算。将为竞争工作负载分配公平数量的 CPU 槽。线程启动时分配一个插槽,持续保持,直到线程结束执行。为查询执行分配的线程数可能仅从 1 增加到max_threads,而不能减少。这对长时间运行的查询更有利,可能导致短查询的 CPU 资源不足。
示例
另见
cpu_slot_preemption_timeout_ms
它定义了一个工作线程在抢占期间可以等待多少毫秒,即在等待授予另一个 CPU 槽期间。如果在此超时后线程无法获得新的 CPU 槽,则将退出,并且查询动态地降低并发执行线程的数量。请注意,主线程永远不会下调,但可以无限期抢占。仅在启用 cpu_slot_preemption 且为工作线程定义 CPU 资源时才有意义。
示例
另见
cpu_slot_quantum_ns
它定义了线程在获得 CPU 槽后可以消耗多少 CPU 纳秒,并在此之前应请求另一个 CPU 槽。仅在启用 cpu_slot_preemption 且为主线程或工作线程定义 CPU 资源时才有意义。
示例
另见
crash_log
crash_log 系统表操作的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 中找到)。
如果前者不存在,将使用后者。
文件系统缓存设置路径必须位于该目录内,
否则将抛出异常以阻止磁盘创建。
这不会影响为其升级了服务器的旧版本创建的磁盘。 在这种情况下,不会抛出异常,以允许服务器成功启动。
示例:
custom_settings_prefixes
自定义设置 的前缀列表。前缀必须用逗号分隔。
示例
另见
database_atomic_delay_before_drop_table_sec
删除表的过程中,可以使用 UNDROP 语句恢复被删除的表的延迟。如果 DROP TABLE 以 SYNC 修饰符运行,则此设置将被忽略。
该设置的默认值为 480(8分钟)。
database_catalog_drop_error_cooldown_sec
database_catalog_drop_table_concurrency
database_catalog_unused_dir_cleanup_period_sec
清理 store/ 目录中的垃圾的任务参数。
设置该任务的调度周期。
值 0 表示"从不"。默认值对应于 1 天。
database_catalog_unused_dir_hide_timeout_sec
清理 store/ 目录中的垃圾的任务参数。
如果某个子目录未被 clickhouse-server 使用,并且该目录在过去的 database_catalog_unused_dir_hide_timeout_sec 秒内未被修改,则该任务将通过
删除所有访问权限来"隐藏"该目录。它也适用于 clickhouse-server 不希望在 store/ 中看到的目录。
值 0 表示"立即"。
database_catalog_unused_dir_rm_timeout_sec
清理 store/ 目录垃圾的任务参数。
如果某个子目录未被 clickhouse-server 使用,并且之前处于 "隐藏" 状态
(参见 database_catalog_unused_dir_hide_timeout_sec)
并且该目录在过去的
[database_catalog_unused_dir_rm_timeout_sec]/operations/server-configuration-parameters/settings#database_catalog_unused_dir_rm_timeout_sec) 秒内未被修改,任务将会删除此目录。
它也适用于 clickhouse-server 预计不会在 store/ 内部看到的目录。
值为 0 意味着 "从不"。默认值对应于 30 天。
database_replicated_allow_detach_permanently
dead_letter_queue
用于 "dead_letter_queue" 系统表的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
默认设置为:
default_database
default_password_type
设置在 CREATE USER u IDENTIFIED BY 'p' 查询中自动设置的密码类型。
接受的值有:
plaintext_passwordsha256_passworddouble_sha1_passwordbcrypt_password
default_profile
默认设置配置文件。设置配置文件位于 user_config 设置指定的文件中。
示例
default_replica_name
ZooKeeper 中的副本名称。
示例
default_replica_path
ZooKeeper 中表的路径。
示例
default_session_timeout
默认会话超时时间,以秒为单位。
dictionaries_config
字典的配置文件路径。
路径:
- 指定绝对路径或相对服务器配置文件的路径。
- 路径可以包含通配符 * 和 ?。
另请参见:
- "Dictionaries".
示例
dictionaries_lazy_load
字典的懒加载。
- 如果
true,则每个字典在第一次使用时加载。如果加载失败,使用字典的函数将抛出异常。 - 如果
false,则服务器在启动时加载所有字典。
服务器在启动时将等待,直到所有字典完成加载,然后才能接收任何连接
(例外:如果 wait_dictionaries_load_at_startup 设置为 false)。
示例
dictionary_background_reconnect_interval
background_reconnect 的失败 MySQL 和 Postgres 字典重连尝试的间隔(以毫秒为单位)。
disable_insertion_and_mutation
禁用所有插入/更改/删除查询。如果需要只读节点以防止插入和更改影响读取性能,则将启用此设置。
disable_internal_dns_cache
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.com 和 about.gitlab.com 将绕过代理。
disk_connections_soft_limit
disk_connections_store_limit
disk_connections_warn_limit
display_secrets_in_show_and_select
启用或禁用在 SHOW 和 SELECT 查询中显示表、数据库、表函数和字典的秘密。
希望查看秘密的用户还必须
启用 format_display_secrets_in_show_and_select 格式设置
并拥有 displaySecretsInShowAndSelect 特权。
可能的值:
0— 禁用。1— 启用。
distributed_cache_apply_throttling_settings_from_client
distributed_cache_keep_up_free_connections_ratio
distributed_ddl
管理在集群上执行 分布式 ddl 查询 (CREATE, DROP, ALTER, RENAME)。
仅在启用 ZooKeeper 的情况下工作。
<distributed_ddl> 中的可配置设置包括:
| 设置 | 描述 | 默认值 |
|---|---|---|
path | DDL 查询的 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 秒 |
示例
dns_allow_resolve_names_to_ipv4
dns_allow_resolve_names_to_ipv6
dns_cache_max_entries
dns_cache_update_period
dns_max_consecutive_failures
drop_distributed_cache_pool_size
drop_distributed_cache_queue_size
enable_azure_sdk_logging
encryption
配置用于 encryption codecs 的密钥获取命令。密钥(或密钥)应写入环境变量或在配置文件中设置。
密钥可以是十六进制或者长度为 16 字节的字符串。
示例
从配置加载:
不建议在配置文件中存储密钥。这不安全。您可以将密钥移动到安全磁盘的单独配置文件中,并将该配置文件的符号链接放入 config.d/ 文件夹中。
从配置加载,当密钥是十六进制时:
从环境变量加载密钥:
此处 current_key_id 设置用于加密的当前密钥,所有指定的密钥可用于解密。
这些方法中的每一个都可以应用于多个密钥:
此处 current_key_id 显示当前的加密密钥。
此外,用户可以添加需要 12 字节长度的 nonce(默认情况下加密和解密过程使用由零字节组成的 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 | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
format_parsing_thread_pool_queue_size
可以在解析输入时调度的最大作业数量。
值为 0 意味着无限制。
format_schema_path
输入数据模式的目录路径,例如 CapnProto 格式的模式。
示例
global_profiler_cpu_time_period_ns
global_profiler_real_time_period_ns
google_protos_path
定义一个目录,包含用于 Protobuf 类型的 proto 文件。
示例:
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。
示例
hsts_max_age
HSTS 的过期时间,以秒为单位。
值为 0 意味着 ClickHouse 禁用 HSTS。如果您设置一个正数,HSTS 将启用,并且 max-age 为您设置的数字。
示例
http_connections_soft_limit
http_connections_store_limit
http_connections_warn_limit
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 | 与静态类型一起使用,响应状态代码 |
query_param_name | 与 dynamic_query_handler 类型一起使用,从 HTTP 请求参数中提取并执行与 <query_param_name> 值相对应的值 |
query | 与 predefined_query_handler 类型一起使用,调用处理程序时执行查询 |
content_type | 与静态类型一起使用,响应内容类型 |
response_content | 与静态类型一起使用,发送到客户端的响应内容,当使用前缀 'file://' 或 'config://' 时,从文件或配置中查找内容发送到客户端 |
您可以指定默认处理程序的 <defaults/> 列表,以启用所有默认处理程序。
示例:
http_options_response
用于在 OPTIONS HTTP 请求中添加响应头。
OPTIONS 方法用于发出 CORS 预检请求。
有关更多信息,请参见 OPTIONS。
示例:
http_server_default_response
在访问 ClickHouse HTTP(s) 服务器时默认显示的页面。 默认值为 "Ok."(末尾带换行符)
示例
访问 http://localhost: http_port 时打开 https://tabix.io/。
iceberg_catalog_threadpool_pool_size
iceberg_catalog_threadpool_queue_size
iceberg_metadata_files_cache_max_entries
iceberg_metadata_files_cache_policy
冰山元数据缓存策略名称。
iceberg_metadata_files_cache_size
冰山元数据缓存的最大大小(以字节为单位)。零表示禁用。
iceberg_metadata_files_cache_size_ratio
冰山元数据缓存中受保护队列的大小(在 SLRU 策略的情况下),相对于缓存的总大小。
ignore_empty_sql_security_in_create_view_query
如果为 true,ClickHouse 在 CREATE VIEW 查询中不写入空 SQL 安全语句的默认值。
此设置仅在迁移期间是必要的,并将在 24.4 中变得过时
include_from
替换文件的路径。支持 XML 和 YAML 格式。
有关更多信息,请参见 “Configuration files” 部分。
示例
index_mark_cache_policy
index_mark_cache_size
最大索引标记的缓存大小。
值为 0 表示禁用。
该设置可以在运行时修改,并将立即生效。
index_mark_cache_size_ratio
index_uncompressed_cache_policy
index_uncompressed_cache_size
MergeTree 索引未压缩块的最大缓存大小。
值为 0 表示禁用。
该设置可以在运行时修改,并将立即生效。
index_uncompressed_cache_size_ratio
interserver_http_credentials
在 复制 期间,用于连接到其他服务器的用户名和密码。此外,服务器使用这些凭据来验证其他副本。
因此 interserver_http_credentials 必须对集群中的所有副本相同。
- 默认情况下,如果省略
interserver_http_credentials部分,则在复制期间不使用身份验证。 interserver_http_credentials设置与 ClickHouse 客户端凭据 配置 无关。- 这些凭据适用于通过
HTTP和HTTPS进行复制。
可以通过子标签配置以下设置:
user— 用户名。password— 密码。allow_empty— 如果为true,则其他副本可以在设置凭据的情况下无需身份验证连接。如果为false,则拒绝未经身份验证的连接。默认值:false。old— 包含在凭据轮换期间使用的旧user和password。可以指定多个old部分。
凭据轮换
ClickHouse 支持动态的 interserver 凭据轮换,而无需同时停止所有副本以更新其配置。凭据可以分步更改。
要启用身份验证,将 interserver_http_credentials.allow_empty 设置为 true 并添加凭据。这允许带身份验证和不带身份验证的连接。
在配置所有副本后,将 allow_empty 设置为 false 或者删除此设置。这使得使用新凭据强制身份验证。
要更改现有凭据,将用户名和密码移动到 interserver_http_credentials.old 部分,并使用新值更新 user 和 password。此时服务器使用新凭据连接到其他副本,并接受使用新或旧凭据的连接。
当新凭据应用到所有副本时,可以删除旧凭据。
interserver_http_host
其他服务器可用于访问此服务器的主机名。
如果省略,将采用与 hostname -f 命令相同的定义。
适合摆脱特定网络接口。
示例
interserver_http_port
用于在 ClickHouse 服务器之间交换数据的端口。
示例
interserver_https_host
类似于 interserver_http_host,不过这个主机名可供其他服务器通过 HTTPS 访问此服务器。
示例
interserver_https_port
用于通过 HTTPS 在 ClickHouse 服务器之间交换数据的端口。
示例
interserver_listen_host
限制可以在 ClickHouse 服务器之间交换数据的主机。 如果使用 Keeper,则该限制将适用于不同 Keeper 实例之间的通信。
默认情况下,值与 listen_host 设置相等。
示例
类型:
默认:
io_thread_pool_queue_size
可以在 IO 线程池上调度的最大作业数量。
值为 0 意味着无限制。
jemalloc_collect_global_profile_samples_in_trace_log
jemalloc_enable_background_threads
jemalloc_enable_global_profiler
jemalloc_flush_profile_interval_bytes
jemalloc_flush_profile_on_memory_exceeded
在发生总内存超限错误时将进行 jemalloc 剖析刷新。
jemalloc_max_background_threads_num
要创建的 jemalloc 后台线程的最大数量,设置为 0 使用 jemalloc 的默认值。
keep_alive_timeout
ClickHouse 在关闭连接之前,等待 HTTP 协议的传入请求的秒数。
示例
keeper_hosts
动态设置。包含 ClickHouse 可以潜在连接的一组 [Zoo]Keeper 主机。不会公开来自 <auxiliary_zookeepers> 的信息。
keeper_multiread_batch_size
支持批处理的多读请求到 [Zoo]Keeper 的最大批处理大小。如果设置为 0,则禁用批处理。仅在 ClickHouse Cloud 中可用。
ldap_servers
在此列出 LDAP 服务器及其连接参数,以便:
- 用作专用本地用户的身份验证者,这些用户指定了 "ldap" 认证机制,而不是 "password"
- 用作远程用户目录。
以下设置可以通过子标签进行配置:
| 设置 | 描述 |
|---|---|
host | LDAP 服务器的主机名或 IP,此参数是必需的,不能为空。 |
port | LDAP 服务器端口,如果 enable_tls 设置为 true,默认是 636,否则为 389。 |
bind_dn | 用于构建绑定的 DN 的模板。在每次身份验证尝试中,生成的 DN 将通过用实际用户名替换模板中的所有 \{user_name\} 子字符串来构造。 |
user_dn_detection | 包含 LDAP 搜索参数的部分,用于检测已绑定用户的实际用户 DN。这主要在 Active Directory 服务器的搜索过滤器中用于进一步的角色映射。生成的用户 DN 将在允许替换 \{user_dn\} 子字符串时使用。默认情况下,用户 DN 设置为等于绑定 DN,但一旦执行搜索,它将被实际检测到的用户 DN 值更新。 |
verification_cooldown | 成功绑定尝试后的一段时间(以秒为单位),在该时间段内,用户将被假定为成功认证,用于所有后续请求,而无需联系 LDAP 服务器。指定 0(默认值)来禁用缓存,并强制在每次身份验证请求时联系 LDAP 服务器。 |
enable_tls | 触发与 LDAP 服务器的安全连接的标志。指定 no 以使用明文 (ldap://) 协议(不推荐)。指定 yes 以使用基于 SSL/TLS 的 LDAP (ldaps://) 协议(推荐,默认)。指定 starttls 以使用旧版 StartTLS 协议(明文(ldap://)协议,升级到 TLS)。 |
tls_minimum_protocol_version | SSL/TLS 的最低协议版本。接受的值包括:ssl2、ssl3、tls1.0、tls1.1、tls1.2(默认)。 |
tls_require_cert | SSL/TLS 对等证书验证行为。接受的值包括:never、allow、try、demand(默认)。 |
tls_cert_file | 证书文件的路径。 |
tls_key_file | 证书密钥文件的路径。 |
tls_ca_cert_file | CA 证书文件的路径。 |
tls_ca_cert_dir | 包含 CA 证书的目录的路径。 |
tls_cipher_suite | 允许的密码套件(以 OpenSSL 表示法)。 |
设置 user_dn_detection 可以通过子标签进行配置:
| 设置 | 描述 |
|---|---|
base_dn | 用于构建 LDAP 搜索的基本 DN 的模板。在 LDAP 搜索过程中,生成的 DN 通过替换模板中所有 \{user_name\} 和 \{bind_dn\} 子字符串与实际用户名和绑定 DN 构建。 |
scope | LDAP 搜索的范围。接受的值包括:base、one_level、children、subtree(默认)。 |
search_filter | 用于构建 LDAP 搜索的搜索过滤器的模板。在 LDAP 搜索过程中,生成的过滤器通过替换模板中所有 \{user_name\}、\{bind_dn\} 和 \{base_dn\} 子字符串与实际用户名、绑定 DN 和基本 DN 构建。请注意,特殊字符必须在 XML 中正确转义。 |
示例:
示例(典型的 Active Directory,配置了用户 DN 检测以方便进一步的角色映射):
license_key
ClickHouse 企业版的许可密钥
listen_backlog
监听套接字的回放(挂起连接的队列大小)。默认值 4096 等于 linux 5.4+) 的值。
通常情况下,此值无需更改,因为:
- 默认值足够大,
- 为接受客户的连接,服务器有单独的线程。
因此,即使你的 TcpExtListenOverflows(来自 nstat)非零,并且该计数器在 ClickHouse 服务器上增加,这并不意味着需要增加该值,因为:
- 通常,如果
4096不够,它显示了某些内部 ClickHouse 扩展问题,因此最好报告一个问题。 - 这并不意味着服务器可以处理更多的连接(即使可以,在那时客户也可能已经离开或断开连接)。
示例
listen_host
限制请求可以来自的主机。如果你希望服务器回答所有请求,请指定 ::。
示例:
listen_reuse_port
允许多个服务器监听相同的地址:端口。请求将由操作系统随机路由到一个服务器。启用此设置不推荐。
示例
类型:
默认:
listen_try
如果在尝试监听时 IPv6 或 IPv4 网络不可用,服务器将不会退出。
示例
load_marks_threadpool_pool_size
load_marks_threadpool_queue_size
logger
日志消息的位置和格式。
键:
| 键 | 描述 |
|---|---|
level | 日志级别。可接受的值:none(关闭日志),fatal、critical、error、warning、notice、information、debug、trace、test |
log | 日志文件的路径。 |
errorlog | 错误日志文件的路径。 |
size | 旋转策略:日志文件最大大小(以字节为单位)。一旦日志文件大小超过此阈值,它将被重命名并归档,并创建一个新的日志文件。 |
count | 旋转策略:Clickhouse 最多保留多少历史日志文件。 |
stream_compress | 使用 LZ4 压缩日志消息。设置为 1 或 true 以启用。 |
console | 启用控制台日志记录。设置为 1 或 true 以启用。如果 Clickhouse 不以守护进程模式运行,则默认为 1,否则为 0。 |
console_log_level | 控制台输出的日志级别。默认为 level。 |
formatting.type | 控制台输出的日志格式。目前仅支持 json |
use_syslog | 也将日志输出转发到 syslog。 |
syslog_level | 发送到 syslog 的日志级别。 |
async | 当设置为 true(默认)时,日志将异步发生(每个输出通道一个后台线程)。否则,它将在调用 LOG 的线程内记录 |
async_queue_max_size | 使用异步日志时,等待刷新的最大消息数。额外消息将被丢弃 |
startup_level | 启动级别用于在服务器启动时设置根记录器级别。启动后,日志级别将恢复为 level 设置 |
shutdown_level | 关闭级别用于在服务器关闭时设置根记录器级别。 |
日志格式说明符
log 和 errorLog 路径中的文件名支持以下格式说明符,用于生成的文件名(目录部分不支持它们)。
“示例” 列显示 2023-07-06 18:32:07 的输出。
| 说明符 | 描述 | 示例 |
|---|---|---|
%% | 字面 % | % |
%n | 新行字符 | |
%t | 水平制表符 | |
%Y | 四位数年份,以十进制数字表示,例如 2017 | 2023 |
%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 |
%V | ISO 8601 周号(范围 [01,53]) | 27 |
%j | 以十进制数字表示的年份中的天数(范围 [001,366]) | 187 |
%d | 以零填充的十进制数字表示的月份中的天数(范围 [01,31])。单个数字前面填充零。 | 06 |
%e | 以空格填充的十进制数字表示的月份中的天数(范围 [1,31])。单个数字前面填充空格。 | 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/%y | 07/06/23 |
%F | 短格式 YYYY-MM-DD 日期,相当于 %Y-%m-%d | 2023-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> 的键:
| 键 | 描述 |
|---|---|
address | syslog 的地址,格式为 host\[:port\]。如果省略,则使用本地守护进程。 |
hostname | 发送日志的主机名称(可选)。 |
facility | syslog 设施关键字。必须大写并以 "LOG_" 前缀开头,例如 LOG_USER、LOG_DAEMON、LOG_LOCAL3 等。如果指定了 address,默认值为 LOG_USER,否则为 LOG_DAEMON。 |
format | 日志消息格式。可能的值:bsd 和 syslog. |
日志格式
可以指定将在控制台日志中输出的日志格式。目前,仅支持 JSON。
示例
以下是 JSON 日志的输出示例:
要启用 JSON 日志支持,请使用以下代码片段:
重命名 JSON 日志的键
可以通过更改 <names> 标签内的标签值来修改键名称。例如,要将 DATE_TIME 改为 MY_DATE_TIME,可以使用 <date_time>MY_DATE_TIME</date_time>。
省略 JSON 日志的键
可以通过注释掉属性来省略日志属性。例如,如果不希望日志打印 query_id,可以注释掉 <query_id> 标签。
macros
用于复制表的参数替代。
如果不使用复制表,则可以省略。
有关更多信息,请参见 创建复制表 部分。
示例
mark_cache_policy
mark_cache_prewarm_ratio
mark_cache_size
标记缓存的最大大小(MergeTree(/engines/table-engines/mergetree-family) 家族的索引)。
此设置可以在运行时修改,并将立即生效。
mark_cache_size_ratio
max_active_parts_loading_thread_pool_size
max_authentication_methods_per_user
可以创建或修改为的用户的最大身份验证方法数。 更改此设置不会影响现有用户。如果超出此设置所指定的限制,将导致与身份验证相关的创建/修改查询失败。 非身份验证的创建/修改查询将成功。
值为 0 表示无限制。
max_backup_bandwidth_for_server
max_backups_io_thread_pool_free_size
max_backup_io_thread_pool_free_size,ClickHouse 将释放被闲置线程占用的资源并减少池大小。如果需要,可以再次创建线程。
max_backups_io_thread_pool_size
max_backups_io_thread_pool_size 限制池中的最大线程数。
max_build_vector_similarity_index_thread_pool_size
用于构建向量索引的最大线程数。
值为 0 表示所有核心。
max_concurrent_insert_queries
并发插入查询的总数限制。
值为 0(默认)表示无限制。
此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。
max_concurrent_queries
并发执行查询的总数限制。请注意,INSERT 和 SELECT 查询的限制,以及用户的最大查询数也必须考虑。
另请参见:
值为 0(默认)表示无限制。
此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。
max_concurrent_select_queries
并发选择查询的总数限制。
值为 0(默认)表示无限制。
此设置可以在运行时修改,并将立即生效。已经在运行的查询将保持不变。
max_connections
max_database_num_to_throw
max_database_num_to_warn
如果附加的数据库数量超过指定值,ClickHouse 服务器将向 system.warnings 表添加警告消息。
示例
max_database_replicated_create_table_thread_pool_size
max_dictionary_num_to_throw
如果字典的数量超过此值,服务器将抛出异常。
仅统计数据库引擎的表:
- Atomic
- Ordinary
- Replicated
- Lazy
值为 0 表示没有限制。
示例
max_dictionary_num_to_warn
如果附加的字典数量超过指定值,ClickHouse 服务器将向 system.warnings 表添加警告消息。
示例
max_distributed_cache_read_bandwidth_for_server
max_distributed_cache_write_bandwidth_for_server
max_entries_for_hash_table_stats
max_fetch_partition_thread_pool_size
max_format_parsing_thread_pool_free_size
保持在解析输入的线程池中等待的最大闲置线程数。
max_format_parsing_thread_pool_size
用于解析输入的最大线程总数。
max_io_thread_pool_free_size
如果 IO 线程池中的 闲置 线程数超过 max_io_thread_pool_free_size,ClickHouse 将释放被闲置线程占用的资源并减少池的大小。如果必要,可以再次创建线程。
max_io_thread_pool_size
ClickHouse 使用 IO 线程池中的线程来执行一些 IO 操作(例如,与 S3 交互)。max_io_thread_pool_size 限制池中的最大线程数。
max_keep_alive_requests
通过单个持久连接的最大请求数,直到 ClickHouse 服务器将其关闭。
示例
max_local_read_bandwidth_for_server
本地读取的最大速度,以字节/秒为单位。
值为 0 意味着无限制。
max_local_write_bandwidth_for_server
本地写入的最大速度,以字节/秒为单位。
值为 0 意味着无限制。
max_materialized_views_count_for_table
附加到表的物化视图数量的限制。
这里只考虑直接依赖的视图,创建一个视图的基础上另一个视图不在此统计内。
max_merges_bandwidth_for_server
max_mutations_bandwidth_for_server
max_named_collection_num_to_throw
如果命名集合的数量超过此值,服务器将抛出异常。
值为 0 意味着没有限制。
示例
max_named_collection_num_to_warn
如果命名集合的数量超过指定的值,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_open_files
打开文件的最大数量。
我们建议在 macOS 上使用此选项,因为 getrlimit() 函数返回的值不正确。
示例
max_os_cpu_wait_time_ratio_to_drop_connection
考虑到丢弃连接的最大操作系统 CPU 等待 (OSCPUWaitMicroseconds 指标) 与繁忙 (OSCPUVirtualTimeMicroseconds 指标) 的比率。使用最小和最大比率之间的线性插值来计算概率,此时概率为 1。 有关更多详细信息,请参见 在服务器 CPU 超载时控制行为。
max_outdated_parts_loading_thread_pool_size
max_part_num_to_warn
如果活动部分的数量超过指定的值,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_partition_size_to_drop
删除分区的限制。
如果 MergeTree 表的大小超过 max_partition_size_to_drop (以字节为单位),则无法使用 DROP PARTITION 查询来删除分区。
此设置不要求重启 ClickHouse 服务器即可生效。另一种禁用限制的方法是创建 <clickhouse-path>/flags/force_drop_table 文件。
示例
max_parts_cleaning_thread_pool_size
max_pending_mutations_execution_time_to_warn
如果任何待处理的变更超过指定的秒数,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_pending_mutations_to_warn
如果待处理的变更数量超过指定的值,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_prefixes_deserialization_thread_pool_free_size
如果前缀反序列化线程池中的 闲置 线程数量超过 max_prefixes_deserialization_thread_pool_free_size,ClickHouse 将释放被闲置线程占用的资源并减少池的大小。如果必要,可以再次创建线程。
max_prefixes_deserialization_thread_pool_size
ClickHouse 使用来自前缀反序列化线程池的线程来并行读取 MergeTree 中的列和子列的文件前缀的元数据。max_prefixes_deserialization_thread_pool_size 限制池中的最大线程数量。
max_remote_read_network_bandwidth_for_server
读取时通过网络的数据交换最大速度,以字节/秒为单位。
值为 0(默认)意味着没有限制。
max_remote_write_network_bandwidth_for_server
写入时通过网络的数据交换最大速度,以字节/秒为单位。
值为 0(默认)意味着没有限制。
max_replicated_fetches_network_bandwidth_for_server
max_replicated_sends_network_bandwidth_for_server
max_replicated_table_num_to_throw
如果复制表的数量超过此值,服务器将抛出异常。
仅计算数据库引擎的表:
- Atomic
- Ordinary
- Replicated
- Lazy
值为 0 意味着没有限制。
示例
max_server_memory_usage
服务器允许使用的最大内存量,以字节为单位。
服务器的最大内存消耗还受到 max_server_memory_usage_to_ram_ratio 设置的限制。
作为特例,值为 0(默认)意味着服务器可以使用所有可用内存(不包括 max_server_memory_usage_to_ram_ratio 所施加的进一步限制)。
max_server_memory_usage_to_ram_ratio
服务器允许使用的最大内存量,以相对于所有可用内存的比例表示。
例如,值为 0.9(默认)意味着服务器可以使用可用内存的 90%。
允许在低内存系统上降低内存使用量。
在 RAM 和交换空间较少的主机上,您可能需要将 max_server_memory_usage_to_ram_ratio 设置为大于 1。
服务器的最大内存消耗还受到 max_server_memory_usage 设置的限制。
max_session_timeout
最大会话超时,以秒为单位。
示例:
max_table_num_to_throw
如果表的数量超过此值,服务器将抛出异常。
以下表不计入:
- view
- remote
- dictionary
- system
仅计算数据库引擎的表:
- Atomic
- Ordinary
- Replicated
- Lazy
值为 0 意味着没有限制。
示例
max_table_num_to_warn
如果附加的表数量超过指定的值,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_table_size_to_drop
删除表的限制。
如果 MergeTree 表的大小超过 max_table_size_to_drop (以字节为单位),则无法使用 DROP 查询或 TRUNCATE 查询来删除它。
值为 0 意味着可以毫无限制地删除所有表。
此设置不要求重启 ClickHouse 服务器即可生效。另一种方法是创建 <clickhouse-path>/flags/force_drop_table 文件来禁用限制。
示例
max_temporary_data_on_disk_size
可用于外部聚合、连接或排序的存储的最大量。 超过此限制的查询将失败并抛出异常。
值为 0 意味着无限制。
另请参见:
max_thread_pool_free_size
如果全局线程池中的 闲置 线程数大于 max_thread_pool_free_size,则 ClickHouse 将释放某些线程占用的资源,并减少池的大小。如果需要,可以再次创建线程。
示例
max_thread_pool_size
ClickHouse 使用全局线程池中的线程来处理查询。如果没有闲置线程处理查询,则会在池中创建新线程。max_thread_pool_size 限制池中的最大线程数。
示例
max_unexpected_parts_loading_thread_pool_size
max_view_num_to_throw
如果视图的数量超过此值,服务器将抛出异常。
仅计算数据库引擎的表:
- Atomic
- Ordinary
- Replicated
- Lazy
值为 0 意味着没有限制。
示例
max_view_num_to_warn
如果附加的视图数量超过指定的值,ClickHouse 服务器将在 system.warnings 表中添加警告消息。
示例
max_waiting_queries
并发等待查询的总数限制。
在所需表异步加载时,等待查询的执行将被阻塞(见 async_load_databases。
当检查以下设置控制的限制时,等待查询不被计入:
max_concurrent_queriesmax_concurrent_insert_queriesmax_concurrent_select_queriesmax_concurrent_queries_for_usermax_concurrent_queries_for_all_users
此修正是为了避免在服务器启动后立即达到这些限制。
值为 0(默认)意味着没有限制。
此设置可以在运行时进行修改,并会立即生效。已运行的查询将保持不变。
memory_worker_correct_memory_tracker
后台内存工作线程是否应该根据来自外部源(如 jemalloc 和 cgroups)的信息来校正内部内存跟踪器。
memory_worker_period_ms
校正内存使用情况并在更高内存使用期间清理未使用页面的后台内存工作线程的滴答周期。如果设置为 0,将根据内存使用源使用默认值。
memory_worker_use_cgroup
使用当前 cgroup 内存使用信息来校正内存跟踪。
merge_tree
用于 MergeTree 表的精细调优。
有关更多信息,请参阅 MergeTreeSettings.h 头文件。
示例
merge_workload
用于调节合并和其他工作负载之间资源的利用和共享。指定的值作为所有后台合并的 workload 设置值。可以被合并树设置覆盖。
另请参阅
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。
另请参阅:
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 | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
min_os_cpu_wait_time_ratio_to_drop_connection
考虑丢弃连接的操作系统 CPU 等待 (OSCPUWaitMicroseconds 指标) 和繁忙 (OSCPUVirtualTimeMicroseconds 指标) 时间的最小比率。使用最小和最大比率之间的线性插值来计算概率,此时概率为 0。 有关更多详细信息,请参见 在服务器 CPU 超载时控制行为。
mlock_executable
在启动后执行 mlockall 以降低首次查询延迟,并防止在高 IO 负载下将 ClickHouse 可执行文件分页出。
建议启用此选项,但将导致启动时间增加最多几秒。 请注意,此设置在没有 "CAP_IPC_LOCK" 能力时无法工作。
示例
mmap_cache_size
该设置有助于避免频繁的打开/关闭调用(由于后续的缺页错误而极其耗时),并重用来自多个线程和查询的映射。设置值是映射区域的数量(通常等于映射文件的数量)。
可以在以下系统表中监控映射文件中的数据量,并获取以下指标:
MMappedFiles/MMappedFileBytes/MMapCacheCells在system.metrics,system.metric_logCreatedReadBufferMMap/CreatedReadBufferMMapFailed/MMappedFileCacheHits/MMappedFileCacheMisses在system.events,system.processes,system.query_log,system.query_thread_log,system.query_views_log
映射文件中的数据量不会直接消耗内存且不会计入查询或服务器内存使用情况,因为这块内存可以像操作系统页面缓存那样被丢弃。该缓存会在 MergeTree 表中删除旧部分时自动丢弃(文件关闭),也可以通过 SYSTEM DROP MMAP CACHE 查询手动丢弃。
此设置可以在运行时进行修改,并会立即生效。
mutation_workload
用于调节变更和其他工作负载之间资源的利用和共享。指定的值作为所有后台变更的 workload 设置值。可以被合并树设置覆盖。
另请参阅
mysql_port
使用 MySQL 协议与客户端进行通信的端口。
- 正整数指定要监听的端口号
- 空值用于禁用与客户端通过 MySQL 协议的通信。
示例
mysql_require_secure_transport
如果设置为 true,则需要与客户端通过 mysql_port 进行安全通信。连接选项 --ssl-mode=none 将被拒绝。与 OpenSSL 设置一起使用。
openSSL
SSL客户端/服务器配置。
支持SSL的是libpoco库。可用的配置选项在SSLManager.h中进行了解释。默认值可以在SSLManager.cpp中找到。
服务器/客户端设置的密钥:
| 选项 | 描述 | 默认值 |
|---|---|---|
privateKeyFile | 包含PEM证书的秘密密钥的文件路径。该文件可以同时包含密钥和证书。 | |
certificateFile | 客户端/服务器证书文件的PEM格式路径。如果privateKeyFile中包含证书,则可以省略此项。 | |
caConfig | 包含受信任CA证书的文件或目录路径。如果指向一个文件,则该文件必须是PEM格式,并可以包含多个CA证书。如果指向一个目录,则必须包含每个CA证书的一个.pem文件。文件名通过CA主体名称哈希值查找。详细信息可以在SSL_CTX_load_verify_locations的手册页中找到。 | |
verificationMode | 检查节点证书的方法。详细信息在Context类的描述中。可能的值:none、relaxed、strict、once。 | relaxed |
verificationDepth | 验证链的最大长度。如果证书链长度超过设定值,验证将失败。 | 9 |
loadDefaultCAFile | 是否使用OpenSSL的内置CA证书。ClickHouse假设内置CA证书在文件/etc/ssl/cert.pem(或目录/etc/ssl/certs)中,或者在环境变量SSL_CERT_FILE(或SSL_CERT_DIR)指定的文件(或目录)中。 | true |
cipherList | 支持的OpenSSL加密方式。 | ALL:!ADH:!LOW:!EXP:!MD5:!3DES:@STRENGTH |
cacheSessions | 启用或禁用会话缓存。必须与sessionIdContext结合使用。可接受的值:true、false。 | false |
sessionIdContext | 服务器附加到每个生成标识符的唯一随机字符集。字符串长度不得超过SSL_MAX_SSL_SESSION_ID_LENGTH。此参数始终建议使用,因为它有助于避免服务器缓存会话和客户端请求缓存时出现的问题。 | $\{application.name\} |
sessionCacheSize | 服务器缓存的最大会话数。值为0表示无限会话。 | 1024*20 |
sessionTimeout | 在服务器上缓存会话的时间(小时)。 | 2 |
extendedVerification | 如果启用,验证证书的CN或SAN是否与对等主机名匹配。 | false |
requireTLSv1 | 要求连接使用TLSv1。可接受的值:true、false。 | false |
requireTLSv1_1 | 要求连接使用TLSv1.1。可接受的值:true、false。 | false |
requireTLSv1_2 | 要求连接使用TLSv1.2。可接受的值:true、false。 | false |
fips | 激活OpenSSL FIPS模式。如果库的OpenSSL版本支持FIPS,则受支持。 | false |
privateKeyPassphraseHandler | 请求访问私钥的密码的类(PrivateKeyPassphraseHandler子类)。例如:<privateKeyPassphraseHandler>、<name>KeyFileHandler</name>、<options><password>test</password></options>、</privateKeyPassphraseHandler>。 | KeyConsoleHandler |
invalidCertificateHandler | 用于验证无效证书的类(CertificateHandler的子类)。例如:<invalidCertificateHandler> <name>RejectCertificateHandler</name> </invalidCertificateHandler>。 | RejectCertificateHandler |
disableProtocols | 不允许使用的协议。 | |
preferServerCiphers | 客户端偏好的服务器加密方式。 | false |
设置示例:
opentelemetry_span_log
opentelemetry_span_log系统表的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
示例:
os_cpu_busy_time_threshold
os_threads_nice_value_distributed_cache_tcp_handler
需要CAP_SYS_NICE能力,否则无效。
可能值:-20至19。
os_threads_nice_value_merge_mutate
需要CAP_SYS_NICE能力,否则无效。
可能值:-20至19。
os_threads_nice_value_zookeeper_client_send_receive
需要CAP_SYS_NICE能力,否则无效。
可能值:-20至19。
page_cache_free_memory_ratio
page_cache_history_window_ms
page_cache_max_size
page_cache_min_size
page_cache_policy
page_cache_shards
page_cache_size_ratio
part_log
与MergeTree相关的事件的日志记录。例如,添加或合并数据。您可以使用日志模拟合并算法并比较其特性。您可以可视化合并过程。
查询记录在system.part_log表中,而不是在单独的文件中。您可以在table参数中配置此表的名称(见下文)。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
示例
parts_kill_delay_period
parts_kill_delay_period_random_add
parts_killer_pool_size
path
包含数据的目录的路径。
尾随斜杠是必需的。
示例
postgresql_port
通过PostgreSQL协议与客户端通信的端口。
- 正整数指定要监听的端口号
- 空值用于禁用通过PostgreSQL协议与客户端的通信。
示例
postgresql_require_secure_transport
如果设置为true,则要求客户端通过postgresql_port进行安全通信。将拒绝使用选项sslmode=disable的连接。与OpenSSL设置一起使用。
prefetch_threadpool_pool_size
prefetch_threadpool_queue_size
prefixes_deserialization_thread_pool_thread_pool_queue_size
可以在前缀反序列化线程池上调度的最大作业数量。
值为0表示无限制。
prepare_system_log_tables_on_startup
如果为true,ClickHouse将在启动前创建所有配置的system.*_log表。如果一些启动脚本依赖于这些表,这可能会很有帮助。
primary_index_cache_policy
primary_index_cache_prewarm_ratio
primary_index_cache_size
primary_index_cache_size_ratio
process_query_plan_packet
此设置允许读取QueryPlan数据包。该数据包在启用了serialize_query_plan时为分布式查询发送。 默认情况下禁用,以避免由查询计划二进制反序列化中的错误可能引发的安全问题。
示例
processors_profile_log
processors_profile_log系统表的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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端点。以'/'开头。port–endpoint的端口。metrics– 暴露来自system.metrics表的指标。events– 暴露来自system.events表的指标。asynchronous_metrics– 暴露来自system.asynchronous_metrics表的当前指标值。errors- 暴露自上次服务器重启以来发生的错误数量以及错误代码。此信息也可以从system.errors中获得。
示例
检查(将127.0.0.1替换为您的ClickHouse服务器的IP地址或主机名):
proxy
为HTTP和HTTPS请求定义代理服务器,目前由S3存储、S3表函数和URL函数支持。
有三种方法可以定义代理服务器:
- 环境变量
- 代理列表
- 远程代理解析器。
支持使用no_proxy绕过特定主机的代理服务器。
环境变量
http_proxy和https_proxy环境变量允许您为给定协议指定代理服务器。如果您在系统中设置了它,它应该能够无缝工作。
这是最简单的方法,如果给定协议仅有一个代理服务器且该代理服务器不会变化。
代理列表
这种方法允许您为一个协议指定一个或多个代理服务器。如果定义了多个代理服务器,ClickHouse将在轮询的基础上使用不同的代理,以在服务器之间均衡负载。如果一个协议有多个代理服务器且代理服务器列表不变,这是一种最简单的方法。
配置模板
在下面的选项卡中选择父字段以查看其子级:
- <proxy>
- <http> and <https>
| 字段 | 描述 |
|---|---|
<http> | 一个或多个HTTP代理的列表 |
<https> | 一个或多个HTTPS代理的列表 |
| 字段 | 描述 |
|---|---|
<uri> | 代理的URI |
远程代理解析器
代理服务器可能会动态更改。在这种情况下,您可以定义解析器的端点。ClickHouse向该端点发送一个空的GET请求,远程解析器应该返回代理主机。ClickHouse将使用以下模板形成代理URI:\{proxy_scheme\}://\{proxy_host\}:{proxy_port}
配置模板
在下面的选项卡中选择父字段以查看其子级:
- <proxy>
- <http> and <https>
- <resolver>
| 字段 | 描述 |
|---|---|
<http> | 一个或多个解析器的列表* |
<https> | 一个或多个解析器的列表* |
| 字段 | 描述 |
|---|---|
<resolver> | 解析器的端点及其他详细信息 |
您可以有多个<resolver>元素,但只使用给定协议的第一个<resolver>。该协议的任何其他<resolver>元素将被忽略。这意味着负载均衡(如有需要)应由远程解析器实现。
| 字段 | 描述 |
|---|---|
<endpoint> | 代理解析器的URI |
<proxy_scheme> | 最终代理URI的协议。可以是http或https。 |
<proxy_port> | 代理解析器的端口号 |
<proxy_cache_time> | 解析器返回的值应被ClickHouse缓存的时间(以秒为单位)。将此值设置为0将导致ClickHouse在每次HTTP或HTTPS请求时都与解析器联系。 |
优先级
代理设置按以下顺序确定:
| 顺序 | 设置 |
|---|---|
| 1. | 远程代理解析器 |
| 2. | 代理列表 |
| 3. | 环境变量 |
ClickHouse将检查请求协议的最高优先级解析器类型。如果未定义,它将检查下一个最高优先级的解析器类型,直到达到环境解析器。这也允许使用解析器类型的混合。
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_condition_cache_policy
query_condition_cache_size
查询条件缓存的最大大小。
此设置可以在运行时修改并会立即生效。
query_condition_cache_size_ratio
query_log
用于记录通过log_queries=1设置接收到的查询。
查询记录在system.query_log表中,而不是在单独的文件中。您可以在table参数中更改此表的名称(见下文)。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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_masking_rules
基于正则表达式的规则,这些规则将在将查询和所有日志消息存储在服务器日志中之前应用,包括
system.query_log、system.text_log、system.processes表和发送到客户端的日志。这允许防止
SQL查询中的敏感数据泄漏,例如姓名、电子邮件、个人标识符或信用卡号码。
示例
配置字段:
| 设置 | 描述 |
|---|---|
name | 规则的名称(可选) |
regexp | 兼容RE2的正则表达式(强制) |
replace | 敏感数据的替代字符串(可选,默认 - 六个星号) |
掩码规则应用于整个查询(以防止敏感数据从格式错误/不可解析的查询中泄漏)。
system.events表具有计数器QueryMaskingRulesMatch,它的值是查询掩码规则匹配的总数。
对于分布式查询,每个服务器都必须单独配置,否则,传递给其他节点的子查询将被存储而不进行掩码。
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 | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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_thread_log
用于记录通过log_query_threads=1设置接收到的查询线程的设置。
查询记录在system.query_thread_log表中,而不是在单独的文件中。您可以在table参数中更改此表的名称(见下文)。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 服务器时发生了变化,则旧结构的表会被重命名,并自动创建一个新表。
示例
remap_executable
用于重新分配内存以处理机器代码(“文本”)的设置,使用大页。
此功能高度实验性。
示例:
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]。 - 如果存在重定向并且启用了对重定向的支持,则检查每个重定向(位置字段)。
例如:
replica_group_name
数据库 Replicated 的副本组名称。
由 Replicated 数据库创建的集群将由同一组中的副本组成。 DDL 查询只会等待同一组中的副本。
默认情况下为空。
示例
replicated_fetches_http_connection_timeout
http_connection_timeout。
replicated_fetches_http_receive_timeout
http_receive_timeout。
replicated_fetches_http_send_timeout
http_send_timeout。
replicated_merge_tree
ReplicatedMergeTree 中表的微调设置。 此设置具有更高的优先级。
有关更多信息,请参见 MergeTreeSettings.h 头文件。
示例
restore_threads
s3_max_redirects
s3_retry_attempts
s3queue_disable_streaming
s3queue_log
s3queue_log 系统表的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
默认设置为:
send_crash_reports
发送崩溃报告到 ClickHouse 核心开发团队的设置。
在生产前环境中启用此功能非常重要。
键:
| 键 | 描述 |
|---|---|
enabled | 启用此功能的布尔标志,默认为 true。设置为 false 以避免发送崩溃报告。 |
send_logical_errors | LOGICAL_ERROR 类似于 assert,是 ClickHouse 中的一个错误。此布尔标志启用发送该异常(默认:true)。 |
endpoint | 可以覆盖发送崩溃报告的端点 URL。 |
推荐用法
series_keeper_path
Keeper 中的路径,带有由 generateSerialID 函数生成的自增编号。每个序列将是该路径下的一个节点。
show_addresses_in_stack_traces
shutdown_wait_backups_and_restores
shutdown_wait_unfinished
shutdown_wait_unfinished_queries
skip_binary_checksum_checks
ssh_server
主机密钥的公钥部分将写入 SSH 客户端侧的 known_hosts 文件中,首次连接时。
主机密钥配置默认情况下是非活动的。 取消注释主机密钥配置,并提供相应 SSH 密钥的路径以激活它们:
示例:
startup_mv_delay_ms
storage_configuration
允许多磁盘存储配置。
存储配置遵循以下结构:
Configuration of disks
disks 的配置遵循下列结构:
上述子标签为 disks 定义了以下设置:
| 设置 | 描述 |
|---|---|
<disk_name_N> | 磁盘的名称,应该是唯一的。 |
path | 服务器数据将存储的路径(data 和 shadow 目录)。应该以 / 结尾。 |
keep_free_space_bytes | 保留磁盘上的空闲空间大小。 |
磁盘的顺序无关紧要。
Configuration of policies
上述子标签为 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_robin 或 least_used。 |
least_used_ttl_ms | 设置超时(以毫秒为单位),以更新所有磁盘的可用空间(0 - 始终更新,-1 - 从不更新,默认值为 60000)。注意,如果仅通过 ClickHouse 使用磁盘,并且不会受到文件系统动态调整的影响,则可以使用 -1 值。在所有其他情况下,这不推荐使用,因为最终会导致空间分配不正确。 |
prefer_not_to_merge | 禁用在该卷上合并数据块的功能。注意:这可能会导致性能下降并造成问题。当启用此设置时(请勿启用此项),会禁止在该卷上合并数据(这不好)。这可以控制 ClickHouse 如何与慢速磁盘交互。我们推荐根本不使用此设置。 |
volume_priority | 定义填充卷的优先级(顺序)。值越小,优先级越高。参数值必须是自然数并覆盖从 1 到 N(N 是指定的最大参数值)之间的范围,且无缺口。 |
对于 volume_priority:
- 如果所有卷都有此参数,则按指定顺序进行优先级排序。
- 如果只有 某些 卷有此参数,则没有该参数的卷的优先级最低。具有此参数的卷根据标签值进行优先排序,其余的优先级则根据配置文件中相对描述的顺序确定。
- 如果 没有 卷提供此参数,则其顺序由配置文件中的描述顺序决定。
- 卷的优先级可能不相同。
storage_connections_soft_limit
storage_connections_store_limit
storage_connections_warn_limit
storage_metadata_write_full_object_key
storage_shared_set_join_use_inner_uuid
table_engines_require_grant
如果设置为 true,则用户需要获得授权才能创建具有特定引擎的表,例如 GRANT TABLE ENGINE ON TinyLog to user。
默认情况下,为了向后兼容,创建带有特定表引擎的表会忽略授权,但您可以通过将此设置为 true 来改变此行为。
tables_loader_background_pool_size
设置在后台池中执行异步加载作业的线程数量。后台池用于在服务器启动后异步加载表,当没有查询等待该表时。如果表的数量很多,保持后台池中的线程数量较低将是有利的。这样可以为并发查询执行保留 CPU 资源。
值为 0 意味着将使用所有可用 CPU。
tables_loader_foreground_pool_size
设置在前台池中执行加载作业的线程数量。前台池用于在服务器开始监听端口之前同步加载表以及加载需要等待的表。前台池的优先级高于后台池。这意味着在前台池中有作业运行时,后台池中不会开始作业。
值为 0 意味着将使用所有可用 CPU。
tcp_close_connection_after_queries_num
tcp_close_connection_after_queries_seconds
tcp_port
用于通过 TCP 协议与客户端通信的端口。
示例
tcp_port_secure
用于与客户端安全通信的 TCP 端口。与 OpenSSL 设置一起使用。
默认值
tcp_ssh_port
SSH 服务器的端口,允许用户连接并通过嵌入式客户端以交互方式执行查询。
示例:
temporary_data_in_cache
使用此选项,临时数据将存储在特定磁盘的缓存中。
在此部分,您应该指定类型为 cache 的磁盘名称。
在这种情况下,缓存和临时数据将共享同一空间,并且磁盘缓存可以被驱逐以创建临时数据。
只能使用一个选项来配置临时数据存储:tmp_path,tmp_policy,temporary_data_in_cache。
示例
local_disk 的缓存和临时数据将存储在文件系统的 /tiny_local_cache 中,由 tiny_local_cache 管理。
temporary_data_in_distributed_cache
text_log
用于记录文本消息的 text_log 系统表设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 |
示例
thread_pool_queue_size
全局线程池中可以调度的最大作业数量。增加队列大小会导致更高的内存使用。建议将此值设置为 max_thread_pool_size。
值为 0 意味着无限制。
示例
threadpool_local_fs_reader_pool_size
local_filesystem_read_method = 'pread_threadpool' 时,从本地文件系统读取的线程池中的线程数量。
threadpool_local_fs_reader_queue_size
threadpool_remote_fs_reader_pool_size
remote_filesystem_read_method = 'threadpool' 时,从远程文件系统读取的线程池中线程数量。
threadpool_remote_fs_reader_queue_size
threadpool_writer_pool_size
threadpool_writer_queue_size
throw_on_unknown_workload
定义访问设置为 'workload' 的未知工作负载时的行为。
- 如果
true,将从尝试访问未知工作负载的查询中抛出 RESOURCE_ACCESS_DENIED 异常。对所有在建立 WORKLOAD 层次结构并包含 WORKLOAD 默认后,强制执行资源调度十分有用。 - 如果
false(默认),提供对未定义工作负载的查询无限制访问,而不进行资源调度。这在设置 WORKLOAD 层次结构,以便在添加 WORKLOAD 默认之前是重要的。
示例
另见
timezone
服务器的时区。
指定为 IANA 的 UTC 时区或地理位置标识符(例如,Africa/Abidjan)。
时区在将字符串和 DateTime 格式之间转换时是必需的,当 DateTime 字段以文本格式(在屏幕上或文件中打印)输出,并且在从字符串获取 DateTime 时。此外,当未在输入参数中接收时,时区在使用时间和日期的函数中使用。
示例
另见
tmp_path
在本地文件系统上存储临时数据的路径,以用于处理大查询。
- 只能使用一个选项来配置临时数据存储:
tmp_path,tmp_policy,temporary_data_in_cache。 - 尾部斜杠是强制性的。
示例
tmp_policy
用于存储临时数据的策略。所有以 tmp 前缀的文件将在启动时被删除。
对将对象存储用作 tmp_policy 的建议:
- 在每个服务器上使用单独的
bucket:path - 使用
metadata_type=plain - 您可能还希望为此存储桶设置 TTL
- 只能使用一个选项来配置临时数据存储:
tmp_path,tmp_policy,temporary_data_in_cache。 move_factor、keep_free_space_bytes、max_data_part_size_bytes被忽略。- 策略应该正好有 一个卷。
有关更多信息,请参见 MergeTree 表引擎 文档。
示例
当 /disk1 已满时,临时数据将存储在 /disk2 中。
top_level_domains_list
定义要添加的自定义顶级域名的列表,其中每个条目的格式为 <name>/path/to/file</name>。
例如:
另见:
- 函数
cutToFirstSignificantSubdomainCustom及其变体, 接受自定义 TLD 列表名称,返回包含顶级子域的域名部分,直到第一个显著子域。
total_memory_profiler_sample_max_allocation_size
total_memory_profiler_sample_probability。值为 0 时禁用。您可能希望将 'max_untracked_memory' 设置为 0,使此阈值按预期工作。
total_memory_profiler_sample_min_allocation_size
total_memory_profiler_sample_probability。值为 0 时禁用。您可能希望将 'max_untracked_memory' 设置为 0,使此阈值按预期工作。
total_memory_profiler_step
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系统表中写入随机分配和去分配。
trace_log
用于 trace_log 系统表操作的设置。
以下设置可以通过子标签进行配置:
| 设置 | 描述 | 默认值 | 备注 |
|---|---|---|---|
database | 数据库的名称。 | ||
table | 系统表的名称。 | ||
engine | MergeTree 引擎定义用于系统表。 | 如果定义了 partition_by 或 order_by,则无法使用。如果未指定,则默认选择 MergeTree | |
partition_by | 系统表的自定义分区键。 | 如果为系统表指定了 engine,则 partition_by 参数应直接在 'engine' 中指定。 | |
ttl | 指定表的生存时间 (TTL)。 | 如果为系统表指定了 engine,则 ttl 参数应直接在 'engine' 中指定。 | |
order_by | 系统表的自定义排序键。无法在定义了 engine 的情况下使用。 | 如果为系统表指定了 engine,则 order_by 参数应直接在 'engine' 中指定。 | |
storage_policy | 要用于表的存储策略名称(可选)。 | 如果为系统表指定了 engine,则 storage_policy 参数应直接在 'engine' 中指定。 | |
settings | 控制 MergeTree 行为的附加参数(可选)。 | 如果为系统表指定了 engine,则 settings 参数应直接在 'engine' 中指定。 | |
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 包含以下设置部分:
uncompressed_cache_policy
uncompressed_cache_size
MergeTree 家族表引擎使用的未压缩数据的最大大小(以字节为单位)。
服务器共享一个缓存。根据需求进行内存分配。启用 use_uncompressed_cache 选项时,将使用该缓存。
未压缩缓存在单个情况下对非常短的查询是有利的。
值为 0 意味着禁用。
此设置可以在运行时修改,并会立即生效。
uncompressed_cache_size_ratio
url_scheme_mappers
用于将缩短的或符号的 URL 前缀转换为完整 URL 的配置。
示例:
use_minimalistic_part_header_in_zookeeper
在 ZooKeeper 中存储数据部分头的方式。此设置仅适用于 MergeTree 系列。可以全局指定:
全面应用于 config.xml 文件的 merge_tree 部分
ClickHouse 为服务器上的所有表使用该设置。您可以随时更改该设置。当设置发生变化时,现有表的行为也会发生变化。
适用于每个表
创建表时,指定相应的 引擎设置。现有表的行为不会因此设置而改变,即使全局设置发生变化。
可能的值
0— 功能已关闭。1— 功能已开启。
如果 use_minimalistic_part_header_in_zookeeper = 1,则 replicated 表将通过使用单个 znode 紧凑地存储数据部分的头。如果表包含许多列,此存储方法显著减少存储在 ZooKeeper 中的数据量。
应用 use_minimalistic_part_header_in_zookeeper = 1 后,您无法将 ClickHouse 服务器降级到不支持此设置的版本。在集群的服务器上升级 ClickHouse 时需谨慎。请勿一次性升级所有服务器。建议在测试环境或者仅在集群的几台服务器上测试新版本的 ClickHouse。
已使用此设置存储的数据部分头不能恢复到以前的(非紧凑)表示形式。
user_defined_executable_functions_config
可执行用户定义函数的配置文件路径。
路径:
- 指定绝对路径或相对于服务器配置文件的路径。
- 路径可以包含通配符 * 和 ?。
另见:
- "可执行用户定义函数。"
示例
user_defined_path
用户定义文件的目录。用于 SQL 用户定义函数 SQL 用户定义函数。
示例
user_directories
包含以下设置的配置文件部分:
- 预定义用户的配置文件路径。
- 存储由 SQL 命令创建的用户的文件夹路径。
- 存储和复制由 SQL 命令创建的用户的 ZooKeeper 节点路径(实验性)。
如果指定了此部分,则将不使用 users_config 和 access_control_path 中的路径。
user_directories 部分可以包含任意数量的项目,项目的顺序表示它们的优先级(项目越高,优先级越高)。
示例
用户、角色、行策略、配额和配置文件也可以存储在 ZooKeeper 中:
您还可以定义部分 memory — 意味着仅在内存中存储信息,不写入磁盘,以及 ldap — 意味着在 LDAP 服务器上存储信息。
要将 LDAP 服务器添加为远程用户目录,以存储未在本地定义的用户,请定义单个 ldap 部分,并设置以下内容:
| 设置 | 描述 |
|---|---|
server | 在 ldap_servers 配置部分中定义的 LDAP 服务器名称之一。此参数是必需的,不能为空。 |
roles | 一个包含将分配给从 LDAP 服务器检索到的每个用户的本地定义角色的列表的部分。如果未指定角色,则用户在身份验证后将无法执行任何操作。如果在身份验证时列出的任何角色未在本地定义,则身份验证尝试将失败,像是提供的密码不正确。 |
示例
user_files_path
用户文件的目录。用于表函数 file()、fileCluster()。
示例
user_scripts_path
用户脚本文件的目录。用于可执行的用户定义函数 可执行用户定义函数。
示例
类型:
默认:
users_config
包含以下内容的文件路径:
- 用户配置。
- 访问权限。
- 设置配置文件。
- 配额设置。
示例
validate_tcp_client_information
默认情况下,它是 false:
vector_similarity_index_cache_max_entries
vector_similarity_index_cache_policy
vector_similarity_index_cache_size
此设置可以在运行时修改,并将立即生效。
vector_similarity_index_cache_size_ratio
wait_dictionaries_load_at_startup
此设置允许指定当 dictionaries_lazy_load 为 false 时的行为。
(如果 dictionaries_lazy_load 为 true,此设置将不影响任何内容。)
如果 wait_dictionaries_load_at_startup 为 false,则服务器会在启动时开始加载所有字典,并且在加载期间将接收连接。
当查询首次使用字典时,如果字典尚未加载,查询将会等待字典加载完成。
将 wait_dictionaries_load_at_startup 设置为 false 可以让 ClickHouse 启动更快,但某些查询可能会执行得更慢(因为它们将不得不等待某些字典加载)。
如果 wait_dictionaries_load_at_startup 为 true,那么服务器将在启动时等待所有字典完成加载(无论成功与否)后再接收任何连接。
示例
workload_path
用作存储所有 CREATE WORKLOAD 和 CREATE RESOURCE 查询的目录。默认情况下使用服务器工作目录下的 /workload/ 文件夹。
示例
另见
workload_zookeeper_path
用于存储所有 CREATE WORKLOAD 和 CREATE RESOURCE 查询的 ZooKeeper 节点路径。为了确保一致性,所有 SQL 定义都作为此单一 znode 的值存储。默认情况下不使用 ZooKeeper,定义存储在 disk。
示例
另见
zookeeper
包含允许 ClickHouse 与 ZooKeeper 集群交互的设置。ClickHouse 在使用复制表时使用 ZooKeeper 存储副本的元数据。如果未使用复制表,则可以省略此参数部分。
可以通过子标签配置以下设置:
| 设置 | 描述 |
|---|---|
node | ZooKeeper 端点。您可以设置多个端点。例如,<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(可选) | ZooKeeper 访问请求的 znodes 所需的用户和密码。 |
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 节点,如果重新连接,则选择下一个节点。 |
示例配置
另见