Clickhouse常见配置解析
Clickhouse的常见配置项在config.xml或 usesr.xml中,基本上都在users.xml中。
下面为ck官网中的配置页
CPU资源
配置 | 描述 |
---|
background_pool_size | 后台线程池的大小,merge线程就是在该线程池中执行,该线程池不仅仅是给merge线程用的,默认值是16,允许的前提下建议改成 cpu 个数的2倍( 线程数) |
background_schedule_pool_size | 执行后台任务(复制表、 kafka流 、DNS 缓存更新) 的线程数。默认 128, 建议改成 cpu 的 2 倍。 |
background_distributed_schedule_pool_size | 设置为分布式发送执行后台任务的线程数, 默认 6 ,建议改成 CPU 个数的 2 倍(线程数) |
max_concurrent_queries | 最大并发处理的请求数(包含 select,insert等 ),默认值 100 ,推荐 150(不够再加)~ 300 。 |
max_thread | 设置单个查询所能使用的最大 CPU 个数,默认是CPU 核数。 |
内存资源
配置 | 描述 |
---|
max_memory_usage | 此参数在 users.xml 中,表示单次 Query 占用内存最大值,该值可以设置的比较大,这样可以提升集群查询的上限。 |
max_bytes_before_external_group_by | 一般哪找max_memory_useage 的一般设置内存, 当group 使用内存超过阈值后会刷新到磁盘进行 。因为clickhouse 聚合分两个阶段:查询并建立中间数据、合并中间数据,结合上一项,建议50G 。 |
max_bytes_before_external_sort | 当order by 已使用 max_bytes_before_external_sort 内存就进行溢出写磁盘(基于磁盘排序),如果不设置该值,那么当内存不够时直接跑错,设置了该值 order by 可以正常完成,但是速度相对内存来说肯定要慢点(实测慢的非常多,无法接受)。 |
max_table_size_to_drop | 此参数在config.xml 中,应用于需要删除表或分区的情况,默认是50GB,意思是如果删除50GB以上的分区表会失败。建议修改为0 ,这样不管多大的分区表都可以删除。 |