clickhouse 配置项解析

Posted 福州司马懿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickhouse 配置项解析相关的知识,希望对你有一定的参考价值。

config.xml

  1. max_table_size_to_drop

    此参数在 /etc/clickhouse-server/config.xml 中,应用于需要删除表或分区的情况,默认是50GB,意思是如果删除50GB以上的分区表会失败。建议修改为0,这样不管多大的分区表都可以删除

  2. max_concurrent_queries
    最大并发查询限制,默认100

users.xml

  1. max_memory_usage
    此参数在 /etc/clickhouse-server/config.xml 中,表示单次Query占用内存最大值,超过的话会查询失败。建议尽量调大一些,同时保留一点给 OS

  2. max_bytes_before_external_group_by
    min_insert_block_size_rows=8192, min_insert_block_size_bytes

聚合需要分两个阶段进行:1.查询并且建立中间数据 2.合并中间数据。
数据“溢出”到磁盘一般发生在第一个阶段,如果没有发生数据“溢出”,ClickHouse在阶段1和阶段2可能需要相同数量的内存

建议将max_memory_usage设置为max_bytes_before_external_group_by大小的两倍

  1. max_bytes_before_external_sort
    与 max_bytes_before_external_group_by 类似,只不过将 group 换成了 sort

  2. max_threads
    设置单个查询所能使用的最大线程个数,默认是CPU的核数 ‘auto(4)’

  3. background_pool_size
    后台线程池的大小,merge线程就是在该线程池中执行,该线程池不仅仅是给merge线程用的,默认值16,允许的前提下建议改成cpu个数的2倍(线程数)

  4. background_schedule_pool_size
    执行后台任务(复制表、Kafka流、DNS缓存更新)的线程数。默认128, 建议改成cpu个数的 16 倍(线程数)

  5. background_distributed_schedule_pool_size
    设置为分布式发送执行后台任务的线程数,默认16,建议改成cpu个数的2倍(线程数)

  6. max_partitions_per_insert_block
    限制单个插入块中的最大分区数。默认值:100,填0表示不限制。一旦单个SQL插入的数据分区块数大于max_partitions_per_insert_block,就会报错 Too many partitions for single INSERT block

  7. max_insert_block_size
    ClickHouse内部所有的数据操作都是面向Block数据块的。
    默认的情况下,每个数据块最多可以写入1048576行数据(由max_insert_block_size参数控制)。也就是说,如果一条INSERT语句写入的数据少于max_insert_block_size行,那么这批数据的写入是具有原子性的,即要么全部成功,要么全部失败

补充

system库里面的表都不是复制表 直接set只会在当前server生效

distribution查询的时候会传递的,最终这些set其实全部保存在client端。随着每个query走的(修改了一个server端,那么client查询会默认将参数传递)

以上是关于clickhouse 配置项解析的主要内容,如果未能解决你的问题,请参考以下文章

Clickhouse-CPU内存资源优化配置

clickhouseClickHouse基础实践调优全视角解析

Clickhouse - 输出每个数组项及其索引/位置

在 ClickHouse 中重命名表时究竟会发生啥?

Clickhouse 无法解析输入:预期 \t 之前

初探ClickHouse的RBAC权限功能