ClickHouse SQL 极简教程使用物化字段投影 PROJECTION 提升性能
Posted 东海陈光剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClickHouse SQL 极简教程使用物化字段投影 PROJECTION 提升性能相关的知识,希望对你有一定的参考价值。
1.1. 使用物化字段投影 PROJECTION 提升性能
ClickHouse作为ROLAP典型代表之一,纯列式存储单表查询性能几乎没有对手。 但是,MergeTree 主键只支持一种排序规则,对查询性能的提升有局限。而有了Projection,我们就可以针对查询主题,创建其他排序规则,实现预聚合优化(空间换时间)。
Projection 名字起源于Vertica,相当于传统意义上的物化视图。它借鉴 MOLAP 预聚合的思想,在数据写入的时候,根据 projection 定义的表达式,计算写入数据的聚合数据同原始数据一并写入。数据查询的过程中,如果查询SQL通过分析可以通过聚合数据得出,直接查询聚合数据减少计算的开销,解决了由于数据量导致的内存问题。Projeciton 底层存储上属于part目录下数据的扩充,可以理解为查询索引的一种形式。
1.1.1. 新增高基维度投影
新增高基维度投影
我们创建的clickhouse_tutorial.user_tag表的联合索引排序键是order by (WatchID, UserID, EventTime),我们可以再选择UserID字段作为高基维度投影字段,执行如下 SQL:
ALTER TABLE clickhouse_tutorial.user_tag ADD PROJECTION pUserID(SELECT * ORDER BY UserID);
以上是关于ClickHouse SQL 极简教程使用物化字段投影 PROJECTION 提升性能的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse SQL 极简教程使用EXPLAIN 分析 SQL 执行计划
ClickHouse SQL 极简教程ClickHouse SQL之数据操作语言 DML