clickhouse优化记录

一、注重使用分区键来加快查询

在大数据量的情况下,如果查询语句中,可以使用分区键来进行查询,可以极大缩小数据的查询范围,加快查询速度。

二、使用order by的列,适用最左前缀匹配原则

比如表的结构是 order by(id, name, age)时,当order by id desc limit 100的情况下,可以使用到此索引,加快查询

三、当查询语句为order by limit时,让尽量少的列参与 order by limit

当id为唯一键时

比如语句

select * from table order by id desc limit 100

可以优化为

select * from table where id in (select id from table order by id desc limit 100)

当表存在多列,且其他列有长度明显较大的列时,速度提升更为明显。

四、使用投影优化查询速度

投影可以极大加快语句的查询速度,当sql语句查询比较频繁时,可以加上投影。注意投影不能设置查询条件。

复制代码
select
    age,
    count(*) as cnt
group by
    age

可以设置为投影,但是不能加上where age > 10这种条件。物化视图可以加条件。

五、查询group by order limit时,如果group by的key distinct值比较多,且key的长度较长,可能总是会内存溢出,此时考虑从产品层面,解决这个问题。

六、参数调整

user.xml里,有三个比较重要的参数

max_memory_usage:最大内存使用

max_bytes_before_external_sort: 当排序所需内存超过此值时,clickhouse会尝试将中间结果写入磁盘

max_bytes_before_external_group_by:当group by所需内存超过此值时,clickhouse会尝试将中间结果写入磁盘

相关推荐
袖清暮雨3 小时前
ClickHouse讲解
大数据·数据库·数据仓库·clickhouse·oracle
江枫渔火L2 天前
使用clickhouse的ReplacingMergeTree引擎表做活跃玩家信息表
数据库·clickhouse
潇凝子潇4 天前
Doris ClickHouse Greenplum 对比
clickhouse·doris·greenplum
递归尽头是星辰5 天前
ClickHouse核心优势分析与场景实战
大数据·数据仓库·clickhouse·实时分析·实时查询
鲁尼的小宝贝7 天前
基于Flink的数据中台管理平台
java·大数据·clickhouse·flink·yarn
问道飞鱼11 天前
【大数据知识】今天聊聊Clickhouse部署方案
大数据·clickhouse·部署
Fireworkitte13 天前
ClickHouse详解
clickhouse
知其_所以然14 天前
使用docker安装clickhouse集群
clickhouse·docker·容器
wuli玉shell15 天前
Doris和Clickhouse对比
clickhouse·doris
SelectDB技术团队18 天前
可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse
大数据·数据仓库·clickhouse·elasticsearch·信息可视化·doris·半结构化