clickhouse-配置解释

详细内容看官网文档

一、全局服务配置

1.配置详解

名称 含义 默认值
allow_use_jemalloc_memory 允许使用 jemalloc 内存 1(布尔)
asynchronous_heavy_metrics_update_period_s 更新异步指标的时间段(以秒为单位) 120
asynchronous_metrics_update_period_s 更新异步指标的时间段(以秒为单位) 1
background_buffer_flush_schedule_pool_size 将用于在后台对缓冲区引擎表执行刷新操作的最大线程数 16
background_common_pool_size 将用于在后台对 *MergeTree 引擎表执行各种操作(主要是垃圾回收)的最大线程数 8
background_distributed_schedule_pool_size 将用于执行分布式发送的最大线程数 16
background_fetches_pool_size 将用于从后台 *MergeTree 引擎表的另一个副本获取数据部分的最大线程数 8
background_merges_mutations_concurrency_ratio 设置线程数与可以同时执行的后台合并和突变数之间的比率。 例如,如果比率等于2并且background_pool_size设置为16,那么ClickHouse可以同时执行32个后台合并。 这是可能的,因为后台操作可以暂停和推迟。 这是为小型合并提供更多执行优先级所必需的。 您只能在运行时增加此比率。 要降低它,您必须重新启动服务器。 与background_pool_size设置相同的background_merges_mutations_concurrency_ratio可以从默认配置文件中应用以实现向后兼容性。 2(float)
background_merges_mutations_scheduling_policy 关于如何执行后台合并和突变调度的策略。 可能的值为:round_robin 和shortest_task_first round_robin --- 每个并发合并和变异都按循环顺序执行,以确保无饥饿操作。 较小的合并比较大的合并完成得更快,因为它们需要合并的块较少。 shortest_task_first --- 始终执行较小的合并或突变。 合并和突变根据其结果大小分配优先级。 较小尺寸的合并优先于较大尺寸的合并。 此策略可确保以最快的速度合并小部分,但可能会导致 INSERT 严重过载的分区中的大合并无限期匮乏。 round_robin
background_message_broker_schedule_pool_size 将用于执行消息流的后台操作的最大线程数 16
background_move_pool_size 将用于将数据部分移动到后台 *MergeTree 引擎表的另一个磁盘或卷的最大线程数 8
background_pool_size 设置使用 MergeTree 引擎对表执行后台合并和突变的线程数。 您只能在运行时增加线程数。 要减少线程数,您必须重新启动服务器。 通过调整此设置,您可以管理 CPU 和磁盘负载。 较小的池大小使用较少的 CPU 和磁盘资源,但后台进程进展较慢,最终可能会影响查询性能。 在更改之前,还请查看相关的 MergeTree 设置,例如 number_of_free_entries_in_pool_to_lower_max_size_of_merge 和 number_of_free_entries_in_pool_to_execute_mutation。 16
background_schedule_pool_size 将用于不断对复制表、Kafka 流式处理和 DNS 缓存更新执行某些轻量级定期操作的最大线程数。 128
backup_threads 执行备份请求的最大线程数 16
backups_io_thread_pool_queue_size 备份 IO 线程池上可以调度的最大作业数。 由于当前的 S3 备份逻辑,建议保持此队列不受限制 (0)。 0
cache_size_to_ram_max_ratio 将缓存大小设置为 RAM 最大比率。允许降低低内存系统上的缓存大小 0.5
concurrent_threads_soft_limit_num 允许运行所有查询的最大查询处理线程数(不包括用于从远程服务器检索数据的线程)。 这不是硬性限制。 万一达到限制,查询仍将至少有一个线程运行。 如果有更多线程可用,查询可以在执行期间扩展到所需的线程数。 0
concurrent_threads_soft_limit_ratio_to_cores 与 concurrent_threads_soft_limit_num 相同,但具有与核心的比率。 0
default_database 默认数据库名称 default
disable_internal_dns_cache 禁用内部 DNS 缓存。 建议在基础设施经常变化的系统(例如 Kubernetes)中运行 ClickHouse。 0(布尔)
dns_cache_update_period 内部 DNS 缓存更新周期(以秒为单位) 15
dns_max_consecutive_failures 从 ClickHouse DNS 缓存中删除主机之前的最大连续解析失败次数 1024
index_mark_cache_size 索引标记的缓存大小。零表示禁用 此设置可以在运行时修改,并将立即生效。 0
index_uncompressed_cache_size 合并树索引的未压缩块的缓存大小。零表示禁用 此设置可以在运行时修改,并将立即生效 0
io_thread_pool_queue_size IO 线程池的队列大小。零表示无限制。 10000
mark_cache_policy 标记缓存策略名称 SLRU
mark_cache_size 标记的缓存大小(合并树系列表的索引) 此设置可以在运行时修改,并将立即生效 5368709120
max_backup_bandwidth_for_server 服务器上所有备份的最大读取速度(以字节/秒为单位)。零表示无限制 0
max_backups_io_thread_pool_free_size 如果Backups IO Thread池中的空闲线程数量超过max_backup_io_thread_pool_free_size,ClickHouse将释放空闲线程占用的资源并减小池大小。 如果需要,可以再次创建线程。 0
max_backups_io_thread_pool_size 用于备份查询的 IO 操作的最大线程数 1000
max_concurrent_queries 并发执行查询总数的限制。 零意味着无限。 请注意,还必须考虑对插入和选择查询以及用户最大查询数的限制。 另请参见 max_concurrent_insert_queries、max_concurrent_select_queries、max_concurrent_queries_for_all_users。 零意味着无限。 此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变。 0
max_concurrent_insert_queries 并发插入查询总数的限制。零表示无限制 此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变 0
max_concurrent_select_queries 限制并发选择查询的总数。零表示无限制。 此设置可以在运行时修改,并将立即生效。已在运行的查询将保持不变 0
max_connections 最大服务器连接数 1024
max_io_thread_pool_free_size IO 线程池的最大可用大小 0
max_io_thread_pool_size 将用于 IO 操作的最大线程数 100
max_local_read_bandwidth_for_server 本地读取的最大速度(以字节/秒为单位)。零表示无限制 0
max_local_write_bandwidth_for_server 本地写入的最大速度(以字节/秒为单位)。零表示无限制 0
max_partition_size_to_drop 限制删除分区。如果 MergeTree 表的大小超过 max_partition_size_to_drop (以字节为单位),则无法使用 DROP PARTITION 查询删除分区。 此设置不需要重新启动 Clickhouse 服务器即可应用。 禁用限制的另一种方法是创建 /flags/force_drop_table 文件。 值 0 表示您可以不受任何限制地删除分区。 50GB
max_remote_read_network_bandwidth_for_server 通过网络进行数据交换的最大速度,以字节/秒为单位进行读取。零表示无限制 0
max_remote_write_network_bandwidth_for_server 通过网络进行写入的数据交换的最大速度(以字节/秒为单位)。零表示无限制 0
max_server_memory_usage 总内存使用量限制。 零意味着无限。默认 max_server_memory_usage 值的计算方式为:memory_amount * max_server_memory_usage_to_ram_ratio。 0
max_table_size_to_drop 删除表的大小限制 50GB
max_temporary_data_on_disk_size 可用于外部聚合、联接或排序的最大存储量。 超过此限制的查询将失败并出现异常。 零意味着无限。 另请参阅 max_temporary_data_on_disk_size_for_user 和 max_temporary_data_on_disk_size_for_query。 0
max_thread_pool_free_size 如果全局线程池中的空闲线程数大于 max_thread_pool_free_size,则 ClickHouse 会释放部分线程占用的资源,并减小池大小。 如果需要的话可以再次创建线程 1000
max_thread_pool_size 可以从操作系统分配并用于查询执行和后台操作的最大线程数 10000
mmap_cache_size 设置映射文件的缓存大小(以字节为单位)。 此设置可以避免频繁的打开/关闭调用(由于随之而来的页面错误,这非常昂贵),并可以重用来自多个线程和查询的映射。 设置值为映射区域的数量(通常等于映射文件的数量)。 可以使用 MMappedFiles 和 MMappedFileBytes 指标在表 system.metrics 和 system.metric_log 中监视映射文件中的数据量。 此外,在 system.asynchronous_metrics 和 system.asynchronous_metrics_log 中通过 MMapCacheCells 指标,在 system.events、system.processes、system.query_log、system.query_thread_log、system.query_views_log 中通过 CreatedReadBufferMMap、CreatedReadBufferMMapFailed、MMappedFileCacheHits、MMappedFileCacheMisses 事件。 请注意,映射文件中的数据量不会直接消耗内存,并且不会计入查询或服务器内存使用量中,因为该内存可以像操作系统页面缓存一样被丢弃。 在删除 MergeTree 系列表中的旧部分时,缓存会自动删除(文件被关闭),也可以通过 SYSTEM DROP MMAP CACHE 查询手动删除。 此设置可以在运行时修改 1000
restore_threads 执行还原请求的最大线程数 16
show_addresses_in_stack_traces 如果设置为 true,将在堆栈跟踪中显示地址 1(布尔)
shutdown_wait_unfinished_queries 如果设置为 true,ClickHouse 将等待运行查询完成,然后再关闭。 0(布尔)
temporary_data_in_cache 使用此选项,临时数据将存储在特定磁盘的缓存中。 在本节中,您应该指定具有类型缓存的磁盘名称。 在这种情况下,缓存和临时数据将共享相同的空间,并且可以逐出磁盘缓存以创建临时数据。 只能使用一个选项来配置临时数据存储:tmp_path、tmp_policy、temporary_data_in_cache。
thread_pool_queue_size 全局线程池上可以调度的最大作业数。 增加队列大小会导致更大的内存使用量。 建议将此值保持等于 max_thread_pool_size。 零意味着无限。 10000
tmp_policy 包含临时数据的存储策略 只能使用一个选项来配置临时数据存储:tmp_path、tmp_policy、temporary_data_in_cache。 move_factor、keep_free_space_bytes、max_data_part_size_bytes 和 被忽略。 策略应该只有一个带有本地磁盘的卷。
uncompressed_cache_policy 未压缩的缓存策略名称 SLRU
uncompressed_cache_size 合并树系列中的表引擎使用的未压缩数据的高速缓存大小(以字节为单位)。零表示禁用。服务器有一个共享缓存。内存按需分配。如果启用了选项 use_uncompressed_cache,则使用缓存。在个别情况下,未压缩的缓存对于非常短的查询是有利的。 此设置可以在运行时修改,并将立即生效 0
builtin_dictionaries_reload_interval 重新加载内置词典之前的间隔(以秒为单位)。ClickHouse每x秒重新加载一次内置词典。这样就可以"动态"编辑词典,而无需重新启动服务器 3600
compression 合并树引擎表的数据压缩设置,如果您刚刚开始使用ClickHouse,请不要使用它。 case内容如下: min_part_size -- 数据部分的最小大小。 min_part_size_ratio -- 数据部分大小与表大小的比率。 method------压缩方法。 可接受的值:lz4、lz4hc、zstd、deflate_qpl。 level -- 压缩级别。
encryption 配置命令以获取加密编解码器使用的密钥。 密钥(或多个密钥)应写入环境变量或在配置文件中设置。密钥可以是十六进制或长度等于 16 字节的字符串。
custom_settings_prefixes 自定义设置的前缀列表。前缀必须用逗号分隔。
core_dump 配置核心转储文件大小的软限制 1073741824 (1 GB)
database_atomic_delay_before_drop_table_sec 设置删除表数据之前的延迟(以秒为单位)。 如果查询具有 SYNC 修饰符,则忽略此设置。 480 (8 minute)
database_catalog_unused_dir_hide_timeout_sec 从 store/ 目录清理垃圾的任务的参数。 如果某些子目录未被 clickhouse-server 使用,并且该目录在最后的 database_catalog_unused_dir_hide_timeout_sec 秒内没有被修改,则该任务将通过删除所有访问权限来"隐藏"该目录。 它也适用于 clickhouse-server 不希望在 store/ 中看到的目录。 零意味着"立即"。 3600 (1 hour)
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/ 中看到的目录。 零意味着"从不"。 2592000 (30 days)
database_catalog_unused_dir_cleanup_period_sec 从 store/ 目录清理垃圾的任务的参数。 设置任务的调度周期。 零意味着"从不"。 86400 (1 day)
default_profile 设置配置文件位于参数 user_config 中指定的文件中。
default_replica_name ZooKeeper 中的副本名称
dictionaries_config 字典配置文件的路径,路径可以包含通配符 * 和 ?
user_defined_executable_functions_config 可执行的用户定义函数的配置文件的路径,路径可以包含通配符 * 和 ?
dictionaries_lazy_load 字典的延迟加载。如果为 true,则每个字典都会在第一次使用时创建。 如果字典创建失败,则使用该字典的函数将引发异常。如果为 false,则在服务器启动时创建所有字典,如果创建的字典太长或创建时出现错误,则服务器启动时不会创建这些字典,并继续尝试创建这些字典。 true
format_schema_path 包含输入数据方案的目录路径,例如 CapnProto 格式的方案。
graphite 发送监控数据给graphite的配置
graphite_rollup graphite细化数据的设置
http_port/https_port 用于通过 HTTP 连接到服务器的端口
http_server_default_response 访问 ClickHouse HTTP(s) 服务器时默认显示的页面。 默认值为"OK"。 (末尾有换行符)
hsts_max_age HSTS 的过期时间(以秒为单位)。 默认值为 0 表示 clickhouse 禁用 HSTS。 如果您设置一个正数,则 HSTS 将启用,并且 max-age 是您设置的数字。 0
include_from 包含替换的文件的路径。
interserver_listen_host 对可以在 ClickHouse 服务器之间交换数据的主机的限制。 如果使用Keeper,不同Keeper实例之间的通信也会受到同样的限制。 默认值等于listen_host设置。
interserver_http_port 用于在 ClickHouse 服务器之间交换数据的端口
interserver_http_host 其他服务器可以用来访问该服务器的主机名。如果省略,则其定义方式与 hostname -f 命令相同。对于脱离特定的网络接口很有用。
interserver_https_port 通过 HTTPS 在 ClickHouse 服务器之间交换数据的端口
interserver_https_host 与 interserver_http_host 类似,不同之处在于该主机名可以被其他服务器用来通过 HTTPS 访问该服务器。
interserver_http_credentials 用于在复制期间连接到其他服务器的用户名和密码。 服务器还使用这些凭据对其他副本进行身份验证。 因此,集群中所有副本的 interserver_http_credentials 必须相同。 默认情况下,如果省略 interserver_http_credentials 部分,则在复制期间不使用身份验证。 user------用户名。 password------密码。 allow_empty --- 如果为 true,则即使设置了凭据,也允许其他副本无需身份验证即可连接。 如果为 false,则拒绝未经身份验证的连接。默认值:false。 old --- 包含凭证轮换期间使用的旧用户和密码。 可以指定几个旧部分。
keep_alive_timeout ClickHouse 在关闭连接之前等待传入请求的秒数 10秒
listen_host 对请求可以来自的主机的限制。 如果您希望服务器回答所有请求,请指定::。
listen_backlog 侦听套接字的积压(待处理连接的队列大小)。侦听套接字的积压(待处理连接的队列大小)。通常不需要更改该值,因为:默认值足够大,并且为了接受客户端的连接,服务器有单独的线程。因此,即使您的 TcpExtListenOverflows(来自 nstat)非零并且该计数器随着 ClickHouse 服务器的增加而增加,也不意味着该值需要增加 4096
logger 日志设置 level -- 日志记录级别。 可接受的值:跟踪、调试、信息、警告、错误。 log------日志文件。 包含按级别排列的所有条目。 errorlog -- 错误日志文件。 size -- 文件的大小。 适用于日志和错误日志。 一旦文件达到大小,ClickHouse 就会对其进行归档并重命名,并在其位置创建一个新的日志文件。 count -- ClickHouse 存储的归档日志文件的数量。 console -- 将日志和错误日志发送到控制台而不是文件。 要启用,请设置为 1 或 true。 Stream_compress -- 使用 lz4 流压缩来压缩日志和错误日志。 要启用,请设置为 1 或 true。
send_crash_reports 向clickhouse开发团队发送崩溃报考
macros 复制表的参数替换
max_open_files 打开文件的最大数量
merges_mutations_memory_usage_soft_limit 设置允许使用多少 RAM 来执行merge(合并)和mutation(更新)操作。 零意味着无限。 如果 ClickHouse 达到此限制,它不会安排任何新的后台合并或突变操作,但会继续执行已安排的任务。
merges_mutations_memory_usage_to_ram_ratio 默认的 merges_mutations_memory_usage_soft_limit 值的计算方式为:memory_amount * merges_mutations_memory_usage_to_ram_ratio。 0.5
merge_tree 对MergeTree中的表进行微调
metric_log 默认情况下,它处于启用状态。如果不是,您可以手动执行此操作,如果要禁用则需要创建这个文件 /etc/clickhouse-server/config.d/disable_metric_log.xml,内容如下 <clickhouse><metric_log remove="1" /></clickhouse>
replicated_merge_tree 对ReplicatedMergeTree中的表进行微调
openSSL 加密链接配置,不做详细介绍
part_log 记录与 MergeTree 关联的事件。 例如,添加或合并数据。 您可以使用日志来模拟合并算法并比较它们的特性。 您可以可视化合并过程。使用以下参数来配置日志记录: database -- 数据库的名称。 table -- 系统表的名称。 partition_by --- 系统表的自定义分区键。 如果引擎已定义则无法用。 order_by - 系统表的自定义排序键。 如果引擎已定义则无法使用。 engine - 系统表的 MergeTree 引擎定义。 如果定义了partition_by或order_by则不能使用。 lush_interval_milliseconds -- 将数据从内存缓冲区刷新到表的时间间隔。 max_size_rows -- 日志的最大大小(以行为单位)。 当未刷新的日志量达到max_size时,日志转储到磁盘。 默认值:1048576。 served_size_rows -- 为日志预先分配的内存大小(以行为单位)。 默认值:8192。 buffer_size_rows_flush_threshold -- 行数阈值,达到该阈值会在后台将日志刷新到磁盘。 默认值:max_size_rows / 2。 lush_on_crash - 指示在发生崩溃时是否应将日志转储到磁盘。 默认值:false。 storage_policy -- 用于表的存储策略的名称(可选) settings - 控制 MergeTree 行为的附加参数(可选)。
path 包含数据的目录的路径
Prometheus 指定接受指标数据的prometheus
query_log 用于记录通过 log_queries=1 设置接收到的查询的设置。查询记录在 system.query_log 表中,而不是单独的文件中。 您可以在表参数中更改表的名称(见下文)。使用以下参数来配置日志记录:(参数与part_log表一致)如果该表不存在,ClickHouse 将创建它。 如果ClickHouse服务器更新时查询日志的结构发生变化,旧结构的表将被重命名,并自动创建新表。
query_cache 查询缓存允许仅计算查询一次,并直接从缓存中为同一查询的进一步执行提供服务。 根据查询的类型,这可以显着减少 ClickHouse 服务器select的延迟和资源消耗。 max_size_in_bytes:最大缓存大小(以字节为单位)。 0 表示查询缓存已禁用。 默认值:1073741824 (1 GiB)。 max_entries:缓存中存储的SELECT查询结果的最大数量。 默认值:1024。 max_entry_size_in_bytes:SELECT 查询结果可能必须保存在缓存中的最大大小(以字节为单位)。 默认值:1048576 (1 MiB)。 max_entry_size_in_rows:SELECT 查询结果可能要保存在缓存中的最大行数。 默认值:30000000(3000 万)。 更改立即生效 查询缓存的数据分配在 DRAM 中。 如果内存不足,请确保为 max_size_in_bytes 设置一个较小的值或完全禁用查询缓存。
query_thread_log 用于记录通过 log_query_threads=1 设置接收的查询线程的设置。查询记录在 system.query_thread_log 表中。
query_views_log 记录视图(实时、具体化等)的设置取决于使用 log_query_views=1 设置接收到的查询。查询记录在 system.query_views_log 表中,而不是单独的文件中。
text_log 用于记录文本消息的text_log 系统表的设置。 多出的字段:level --- 将存储在表中的最大消息级别(默认为Trace)。
trace_log Trace_log系统表操作的设置。
asynchronous_insert_log 用于记录异步插入的 asynchronous_insert_log 系统表的设置。
crash_log crash_log系统表的设置
query_masking_rules 基于正则表达式的规则,将应用于查询所有日志消息,然后将它们存储在服务器日志、system.query_log、system.text_log、system.processes 表以及发送到客户端的日志中。 这样可以防止敏感数据从 SQL 查询(如姓名、电子邮件、个人标识符或信用卡号)泄漏到日志中。配置字段: name - 规则的名称(可选) regexp - RE2 兼容的正则表达式(强制) replace - 敏感数据的替换字符串(可选,默认情况下 - 六个星号) 屏蔽规则应用于整个查询(以防止由于格式错误/不可解析的查询而泄漏敏感数据)。system.events 表有计数器 QueryMaskingRulesMatch,它具有查询屏蔽规则匹配的总数。对于分布式查询,每个服务器必须单独配置,否则,传递到其他节点的子查询将不加掩码地存储。
remote_servers 分布式表引擎和簇表功能使用的簇的配置。
timezone 时区
tcp_port 通过 TCP 协议与客户端通信的端口。
tcp_port_secure 用于与客户端安全通信的 TCP 端口。 将其与 OpenSSL 设置一起使用。 9440
mysql_port 通过mysql协议与客户端通信的端口
postgresql_port 通过postgresql协议与客户端通信的端口
tmp_path 本地文件系统上用于存储处理大型查询的临时数据的路径。只能使用一个选项来配置临时数据存储:tmp_path、tmp_policy、temporary_data_in_cache。尾部斜杠是强制性的。例如<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
user_files_path 包含用户文件的目录,规定了使用file()函数的路径
user_scripts_path 包含用户脚本文件的目录。 用于可执行的用户定义函数
user_defined_path 包含用户定义文件的目录。 用于 SQL 用户定义函数
users_config 包含以下内容的文件的路径:用户配置。访问权。设置配置文件。配额设置。
zookeeper 包含允许 ClickHouse 与 ZooKeeper 集群交互的设置。当使用复制表时,ClickHouse 使用 ZooKeeper 来存储副本的元数据。 如果不使用复制表,这部分参数可以省略。该部分包含以下参数: 节点 --- ZooKeeper 端点。 您可以设置多个端点。 session_timeout_ms --- 客户端会话的最大超时时间(以毫秒为单位)。 operation_timeout_ms --- 一项操作的最大超时时间(以毫秒为单位)。 root --- 用作 ClickHouse 服务器使用的 znode 的根的 znode。 选修的。 fallback_session_lifetime.min - 如果通过zookeeper_load_balancing策略解析的第一个zookeeper主机不可用,则将zookeeper会话的生命周期限制到后备节点。 这样做是为了负载平衡的目的,以避免其中一台 Zookeeper 主机负载过重。 此设置设置回退会话的最短持续时间。 以秒为单位设置。 选修的。 默认为 3 小时。 fallback_session_lifetime.max - 如果通过zookeeper_load_balancing策略解析的第一个zookeeper主机不可用,则将zookeeper会话的生命周期限制到后备节点。 这样做是为了负载平衡的目的,以避免其中一台 Zookeeper 主机负载过重。 此设置设置回退会话的最大持续时间。 以秒为单位设置。 选修的。 默认值为 6 小时。 identity --- ZooKeeper 可能需要用户和密码来授予对所请求的 znode 的访问权限。 选修的。 Zookeeper_load_balancing - 指定 ZooKeeper 节点选择的算法,有以下几种算法。 random - 随机选择 ZooKeeper 节点之一。 in_order - 选择第一个 ZooKeeper 节点,如果不可用则选择第二个,依此类推。 nearest_hostname - 选择主机名与服务器主机名最相似的 ZooKeeper 节点。 first_or_random - 选择第一个 ZooKeeper 节点,如果它不可用,则随机选择剩余的 ZooKeeper 节点之一。 round_robin - 选择第一个 ZooKeeper 节点,如果发生重新连接,则选择下一个。
use_minimalistic_part_header_in_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 的新版本会更安全。已使用此设置存储的数据部分标头无法恢复为其之前的(非紧凑)表示形式。 0
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 秒
access_control_path ClickHouse 服务器存储 SQL 命令创建的用户和角色配置的文件夹路径 /var/lib/clickhouse/access/
user_directories 包含设置的配置文件部分:具有预定义用户的配置文件的路径。存储由 SQL 命令创建的用户的文件夹路径。ZooKeeper 节点路径,其中存储和复制由 SQL 命令创建的用户(实验)。如果指定此部分,则不会使用 users_config 和 access_control_path 中的路径。user_directories 部分可以包含任意数量的项目,项目的顺序意味着它们的优先级(项目越高优先级越高)。
total_memory_profiler_step 设置每个峰值分配步骤的堆栈跟踪的内存大小(以字节为单位)。 query_id等于空字符串的话数据存储在system.trace_log系统表中, 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 启用或禁用在表、数据库、表函数和字典的 SHOW 和 SELECT 查询中显示机密。希望查看机密的用户还必须打开 format_display_secrets_in_show_and_select 格式设置并具有 displaySecretsInShowAndSelect 权限。0禁用,1启用 0

2.配置示例

2.1 interserver_http_credentials的示例与详解:

ClickHouse 支持动态服务器间凭证轮换,无需同时停止所有副本来更新其配置。 可以通过几个步骤更改凭据。

要启用身份验证,请将 interserver_http_credentials.allow_empty 设置为 true 并添加凭据。 这允许有身份验证和无身份验证的连接。

xml 复制代码
<interserver_http_credentials>
    <user>admin</user>
    <password>111</password>
    <allow_empty>true</allow_empty>
</interserver_http_credentials>

配置所有副本后,将allow_empty 设置为 false 或删除此设置。 它强制使用新凭据进行身份验证。

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

xml 复制代码
<interserver_http_credentials>
    <user>admin</user>
    <password>222</password>
    <old>
        <user>admin</user>
        <password>111</password>
    </old>
    <old>
        <user>temp</user>
        <password>000</password>
    </old>
</interserver_http_credentials>

将新凭据应用于所有副本时,可能会删除旧凭据

2.2 zookeeper配置模版

xml 复制代码
<zookeeper>
    <node>
        <host>example1</host>
        <port>2181</port>
    </node>
    <node>
        <host>example2</host>
        <port>2181</port>
    </node>
    <session_timeout_ms>30000</session_timeout_ms>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <!-- Optional. Chroot suffix. Should exist. -->
    <root>/path/to/zookeeper/node</root>
    <!-- Optional. Zookeeper digest ACL string. -->
    <identity>user:password</identity>
    <!--<zookeeper_load_balancing>random / in_order / nearest_hostname / first_or_random / round_robin</zookeeper_load_balancing>-->
    <zookeeper_load_balancing>random</zookeeper_load_balancing>
</zookeeper>

2.3 distributed_ddl的设置

xml 复制代码
<distributed_ddl>
    <!-- Path in ZooKeeper to queue with DDL queries -->
    <path>/clickhouse/task_queue/ddl</path>

    <!-- Settings from this profile will be used to execute DDL queries -->
    <profile>default</profile>

    <!-- Controls how much ON CLUSTER queries can be run simultaneously. -->
    <pool_size>1</pool_size>

    <!--
         Cleanup settings (active tasks will not be removed)
    -->

    <!-- Controls task TTL (default 1 week) -->
    <task_max_lifetime>604800</task_max_lifetime>

    <!-- Controls how often cleanup should be performed (in seconds) -->
    <cleanup_delay_period>60</cleanup_delay_period>

    <!-- Controls how many tasks could be in the queue -->
    <max_tasks_in_queue>1000</max_tasks_in_queue>
</distributed_ddl>

2.4 user_directories配置的示例和解释

xml 复制代码
<user_directories>
    <users_xml>
        <path>/etc/clickhouse-server/users.xml</path>
    </users_xml>
    <local_directory>
        <path>/var/lib/clickhouse/access/</path>
    </local_directory>
</user_directories>

Users, roles, row policies, quotas, and profiles 也可以存储在 ZooKeeper 中:

xml 复制代码
<user_directories>
    <users_xml>
        <path>/etc/clickhouse-server/users.xml</path>
    </users_xml>
    <replicated>
        <zookeeper_path>/clickhouse/access/</zookeeper_path>
    </replicated>
</user_directories>

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

要将 LDAP 服务器添加为本地未定义的用户的远程用户目录,请使用以下参数定义单个 ldap 部分:

  • server --- ldap_servers 配置部分中定义的 LDAP 服务器名称之一。 该参数为必填项,不能为空。
  • roles --- 包含本地定义的角色列表的部分,这些角色将分配给从 LDAP 服务器检索到的每个用户。 如果未指定角色,用户在身份验证后将无法执行任何操作。 如果在身份验证时未在本地定义任何列出的角色,则身份验证尝试将失败,就像提供的密码不正确一样。
xml 复制代码
<ldap>
    <server>my_ldap_server</server>
        <roles>
            <my_local_role1 />
            <my_local_role2 />
        </roles>
</ldap>

二、query-level的变量配置

1.配置和查询方法

有多种方法可以设置 ClickHouse 查询级别设置。 设置按层进行配置,每个后续层都会重新定义设置的先前值。

定义设置的优先级顺序是:

  • 直接或在设置配置文件中将设置应用于用户
    • SQL(推荐)
    • 将一个或多个 XML 或 YAML 文件添加到 /etc/clickhouse-server/users.d
  • 会话设置
    • 从 ClickHouse Cloud SQL 控制台或 clickhouse 客户端以交互模式发送 SET setting=value。 同样,您可以在 HTTP 协议中使用 ClickHouse 会话。 为此,您需要指定 session_id HTTP 参数。
  • 查询设置
    • 非交互方式启动clickhouse客户端时,设置启动参数--setting=value。
    • 使用 HTTP API 时,传递 CGI 参数(URL?setting_1=value&setting_2=value...)。
    • 在 SELECT 查询的 SETTINGS 子句中定义设置。 设置值仅应用于该查询,并在执行查询后重置为默认值或之前的值。

1.1 创建用户时候直接设置

sql 复制代码
# 设置方法
CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS async_insert = 1

# 查看方法
SHOW ACCESS

# 也可以通过设置profile来配置
CREATE
SETTINGS PROFILE log_ingest SETTINGS async_insert = 0

CREATE USER ingester
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3'
SETTINGS PROFILE log_ingest

1.2 通过配置文件制定

xml 复制代码
<!-- /etc/clickhouse-server/users.d/users.xml-->
<clickhouse>
    <profiles>
        <log_ingest>
            <async_insert>1</async_insert>
        </log_ingest>
    </profiles>

    <users>
        <ingester>
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <profile>log_ingest</profile>
        </ingester>
        <default replace="true">
            <password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex>
            <access_management>1</access_management>
            <named_collection_control>1</named_collection_control>
        </default>
    </users>
</clickhouse>

1.3 设置session变量

sql 复制代码
# 这只是session级别变量
SET async_insert =1;
SELECT value FROM system.settings where name='async_insert';

# 也可以设置变量为默认值,这样就会取这个变量的默认值来设置变量async_insert的默认值为0
SET async_insert = DEFAULT;

1.4 在查询中直接制定变量

sql 复制代码
INSERT INTO YourTable
SETTINGS async_insert=1
VALUES (...)

1.5 自定义变量的设置和查询

sql 复制代码
SET custom_a = 123;
# 这个查询可以查看query-level的value为true或者false的变量,具体值的变量无法查看
SELECT getSetting('custom_a');

2.具体配置

具体配置可看官方文档,后续会逐渐补充一些用到的配置

相关推荐
斯特凡今天也很帅7 小时前
clickhouse常用语句汇总——持续更新中
数据库·sql·clickhouse
SelectDB技术团队1 天前
从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效
大数据·数据仓库·clickhouse·kylin·实时分析
risc1234566 天前
【ClickHouse】RollingBitmap
clickhouse
斯特凡今天也很帅6 天前
clickhouse如何查看操作记录,从日志来查看写入是否成功
数据库·clickhouse
袖清暮雨11 天前
ClickHouse讲解
大数据·数据库·数据仓库·clickhouse·oracle
江枫渔火L13 天前
使用clickhouse的ReplacingMergeTree引擎表做活跃玩家信息表
数据库·clickhouse
潇凝子潇15 天前
Doris ClickHouse Greenplum 对比
clickhouse·doris·greenplum
递归尽头是星辰16 天前
ClickHouse核心优势分析与场景实战
大数据·数据仓库·clickhouse·实时分析·实时查询
鲁尼的小宝贝18 天前
基于Flink的数据中台管理平台
java·大数据·clickhouse·flink·yarn
问道飞鱼22 天前
【大数据知识】今天聊聊Clickhouse部署方案
大数据·clickhouse·部署