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.具体配置

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

相关推荐
爱上口袋的天空19 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
爱上口袋的天空3 天前
06 - Clickhouse的表引擎
数据库·clickhouse
吹老师个人app编程教学4 天前
ClickHouse的介绍、安装、数据类型
数据库·clickhouse·oracle
有被蠢哭到4 天前
Python连接Mysql、Postgre、ClickHouse、Redis常用库及封装方法
redis·python·mysql·clickhouse·postgresql
genghongsheng4 天前
执行flink sql连接clickhouse库
数据库·clickhouse·flink
爱上口袋的天空5 天前
04 - Clickhouse-21.7.3.14-2单机版安装
linux·服务器·clickhouse
LanFengXuXue5 天前
Clickhouse集群新建用户、授权以及remote权限问题
数据库·clickhouse
期待着201313 天前
ClickHouse创建分布式表
数据库·clickhouse
昨天今天明天好多天14 天前
【ClickHouse】创建表
数据库·clickhouse·oracle
从未完美过14 天前
clickhouse自增id的处理
数据库·clickhouse