Clickhouse 配置使用

配置文件

Clickhouse配置项主要在 config.xml 或 users.xml 中, 基本上都在 users.xml 里

CPU 资源

配置

描述

默认值

background_pool_size后台线程池的大小,merge 线程就是在该线程池中执行,该线程池 不仅仅是给 merge 线程用的,默认值 16,允许的前提下建议改成 cpu 个数的 2 倍(线程数)。16
background_schedule_pool_size执行后台任务(复制表、Kafka 流、DNS 缓存更新)的线程数。默 认 128,建议改成 cpu 个数的 2 倍(线程数)。128
background_distributed_schedule_ pool_size设置为分布式发送执行后台任务的线程数,默认 16,建议改成 cpu 个数的 2 倍(线程数)。16
max_concurrent_queries最大并发处理的请求数(包含 select,insert 等),默认值 100,推荐 150(不够再加)~300。100
max_threads设置单个查询所能使用的最大 cpu 个数,默认是 cpu 核数cpu 核数

内存资源

配置

描述

默认值

max_memory_usage

此参数在 users.xml 中,表示单次 Query 占用内存最大值,该值可 以设置的比较大,这样可以提升集群查询的上限。
保留一点给 OS,比如 128G 内存的机器,设置为 100GB。

10GB
max_bytes_before_external_group_ by

一般按照 max_memory_usage 的一半设置内存,当 group 使用内 存超过阈值后会刷新到磁盘进行。
因为 clickhouse 聚合分两个阶段:查询并及建立中间数据、合并中 间数据,结合上一项,建议 50GB。

50GB
max_bytes_before_external_sort

当 order by 已使用 max_bytes_before_external_sort 内存就进行 溢写磁盘(基于磁盘排序),如果不设置该值,那么当内存不够时直接 抛错,设置了该值 order by 可以正常完成,但是速度相对存内存来 说肯定要慢点(实测慢的非常多,无法接受)。

max_table_size_to_drop

max_partition_size_to_drop

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

Clickhouse 通用优化参数

配置名

推荐配置

说明

配置名

推荐配置

说明

max_server_memory_usage_to_ram_ratio

不推荐0

占用物理机内存比例

max_memory_usage

根据单查询内存使用量和并发合理调整

单查询最大使用内存量

background_pool_size

CPU核心数的两倍

后台Merge操作的线程数

max_parts_in_total

1000000

单机最大part个数

parts_to_delay_insert

3000

单个分区下的活跃part数超过该值后,会延迟新的写入

parts_to_throw_insert

4000

单个分区下的活跃part数超过该值后,会丢弃新的写入

old_parts_lifetime

0表示立即删除旧的part,根据业务需求调整

后台合并和数据过期后旧的part保留的时间

max_concurrent_queries

根据机器资源调整

某个MergeTree的最大查询数

max_bytes_before_external_group_by

推荐开启,具体值为max_memory_usage的一半

Group by 过程允许数据落盘



配置修改生效方式

以修改 max_threads 为例,示范下临时修改与永久修改

临时修改

SET 命令可以修改的变量都存储在 system.settings 表中。表中的 name 和 value 字段均是 String 类型的

使用 clickhouse-client 以 9000 端口,TCP 的方式登录 clickhouse-server,对 max_threads 进行设置

# 改变 max_memory_usage,改变生效后退出

clickhouse-client

SELECT name,value FROM system.settings WHERE name='max_threads';

SET max_threads=2;

SELECT name,value FROM system.settings WHERE name='max_threads';

exit;

# 重新进入查看,发现数值又恢复初始值了

clickhouse-client

SELECT name,value FROM system.settings WHERE name='max_threads';

全局修改
编辑 vim /etc/clickhouse-server/users.xml,然后进行修改

<!-- 修改前 -->

<max_threads>1</max_threads>

<!-- 修改后 -->

<max_threads>4</max_threads>

修改后,直接在 clickhouse-client 查询(中途不用退出重进),可以发现数值已经被改变了。

这是因为clickhouse每隔一定的时间,会监控配置文件是否被改变,如果被改变则重新加载各项参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值