更新时间:2025-03-15 GMT+08:00
分享

ClickHouse参数调优实践

表1 ClickHouse参数调优汇总

参数名

参数描述

默认值

建议值

配置方式

是否需要重启生效

max_memory_usage_for_all_queries

单台服务器上所有查询的内存使用量,默认没有限制。建议根据机器的总内存,预留一部分空间,防止内存不够导致服务或者机器异常。

0

机器总内存的80%

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_memory_usage_for_all_queries。

max_memory_usage

单个查询在单台服务器的能使用的最大内存。

10G

50GB

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_memory_usage。

否(新版本可通过多租户方式配置)

max_bytes_before_external_group_by

确定了在GROUP BY中启动将临时数据转存到磁盘上的内存阈值。默认值为0表示这项功能将被禁用。一般:设置为max_memory_usage/2。

0

25GB

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_bytes_before_external_group_by。

max_execution_time

单次查询耗时的最长时间,单位为秒。默认没有限制。

0

300

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_execution_time。

max_threads

执行请求的最大线程数。默认情况下是按照机器CPU核数自动确定的。单并发情况下线程数越大越好(该值要小于CPU核数),多并发情况建议设置为CPU核数/2的值。

CPU核数/2

64

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_threads。

max_result_rows

限制返回结果行数,默认为0不限制。

0

100000

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_result_rows。

distributed_product_mode

默认SQL中的子查询不允许使用分布式表,修改为local表示将子查询中对分布式表的查询转换为对应的本地表。

deny

根据场景定:

deny/local/global/allow

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.distributed_product_mode。

background_pool_size

后台用于merge的线程池大小。

16

  • 4u16G:cpu核数
  • 8u32G:cpu核数
  • 16u64G及以上:CPU内核数 * 2

配置参数界面配置。

max_bytes_before_external_sort

如果没有足够的内存,可以使用该参数来设置外部排序(在磁盘中创建一些临时文件)。默认为0表示禁用外部排序功能,当内存不够时直接抛错,设置了该值order by可以正常完成,但是速度非常慢。

0

25GB

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-user-profiles-customize自定义配置profiles.default.max_bytes_before_external_sort。

keep_alive_timeout

服务端与客户端保持长连接的时长,单位为秒。

10

80

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-config-customize自定义配置keep_alive_timeout

max_concurrent_queries

最大支持的查询并发。

100

100

配置参数界面配置。

session_timeout_ms

ClickHouse服务和ZooKeeper保持的会话时长,超过该时间ZooKeeper还收不到Clickhouse的心跳信息,会将与Clickhouse的session断开。

3000

60000

配置参数界面配置。

max_server_memory_usage_to_ram_ratio

ClickHosueServer默认可使用的系统最大内存比例,小数表示,如0.9表示系统内存的90%。配置不合理可能出现节点OOM导致业务受损。

0.8

  • 4u16G:0.6
  • 8u32G:0.7
  • 16u64G:0.8
  • 32u128G及以上:0.9

配置参数界面存在,则直接配置。如果不存在,则通过clickhouse-config-customize自定义配置max_server_memory_usage_to_ram_ratio。

相关文档