ClickHouse参数调优实践
参数名 |
参数描述 |
默认值 |
建议值 |
是否需要重启生效 |
---|---|---|---|---|
max_memory_usage_for_all_queries |
单台服务器上所有查询的内存使用量,默认没有限制。建议根据机器的总内存,预留一部分空间,防止内存不够导致服务或者机器异常。 |
0 |
机器总内存的80% |
否 |
max_memory_usage |
单个查询在单台服务器的能使用的最大内存。 |
10G |
50GB |
否(新版本可通过多租户方式配置) |
max_bytes_before_external_group_by |
确定了在GROUP BY中启动将临时数据转存到磁盘上的内存阈值。默认值为0表示这项功能将被禁用。一般:设置为max_memory_usage/2。 |
0 |
25GB |
否 |
max_execution_time |
单次查询耗时的最长时间,单位为秒。默认没有限制。 |
0 |
300 |
否 |
max_threads |
执行请求的最大线程数。默认情况下是按照机器CPU核数自动确定的。单并发情况下线程数越大越好(该值要小于CPU核数),多并发情况建议设置为CPU核数/2的值。 |
CPU核数/2 |
64 |
否 |
max_result_rows |
限制返回结果行数,默认为0不限制。 |
0 |
100000 |
否 |
distributed_product_mode |
默认SQL中的子查询不允许使用分布式表,修改为local表示将子查询中对分布式表的查询转换为对应的本地表。 |
deny |
根据场景定: deny/local/global/allow |
否 |
background_pool_size |
后台用于merge的线程池大小。 |
16 |
|
否 |
log_queries |
system.query_log表的开关。默认值为0,不存在该表。修改为1,系统会自动创建system.query_log表,并记录每次query的日志信息。 |
0 |
1 |
否 |
skip_unavailable_shards |
当通过分布式表查询时,遇到无效的shard是否跳过。默认值为0表示不跳过,抛异常。设置值为1表示跳过无效shard。 |
0 |
建议使用默认值。异常时,调整为1,提供有损服务。 |
否 |
max_bytes_before_external_sort |
如果没有足够的内存,可以使用该参数来设置外部排序(在磁盘中创建一些临时文件)。默认为0表示禁用外部排序功能,当内存不够时直接抛错,设置了该值order by可以正常完成,但是速度非常慢。 |
0 |
25GB |
否 |
keep_alive_timeout |
服务端与客户端保持长连接的时长,单位为秒。 |
10 |
600 |
否 |
max_concurrent_queries |
最大支持的查询并发。 |
100 |
150 |
否 |
session_timeout_ms |
ClickHouse服务和ZooKeeper保持的会话时长,超过该时间ZooKeeper还收不到Clickhouse的心跳信息,会将与Clickhouse的session断开。 |
3000 |
120000 |
否 |
max_server_memory_usage_to_ram_ratio |
ClickHosueServer默认可使用的系统最大内存比例,小数表示,如0.9表示系统内存的90%。配置不合理可能出现节点OOM导致业务受损。 |
0.8 |
|
是 |