Clickhouse Projection (投影)
是什么
投影允许通过存储预聚合数据来提高查询速度(空间换时间)。类似于物化视图但是比它更加灵活和强大。
Projection 的概念出自 《C-Store: A Column-oriented DBMS》这篇论文,作者是2015年图灵奖获得者、Vertica 之父,Mike Stonebraker。Projection 意指一组列的组合,可以按照与原表不同的排序存储,并且支持聚合函数的查询
Clickhouse在21.6中引入投影概念,在 22.2版本中宣布可投入生产环境而不是实验功能
基本使用
# 通过eventId查询日志数据,数据量为3亿,没有新的数据接入
# 花费19s 扫描全表数据3亿
SELECT eventId,startTime from ailpha.ailpha_ueba_securitylog WHERE eventId='5888642880540135395';
# 添加投影
ALTER TABLE ailpha.ailpha_ueba_securitylog ADD PROJECTION p211 (SELECT * ORDER BY eventId)