- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2021年ClickHouse最王炸功能来袭,功能轻松提升40倍
Python爬虫与数据挖掘
1970-01-01
以下文章来源于ClickHouse的隐秘基地 ,作者凯朱 HYPERLINK
ClickHouse的隐秘基地
.
这里是ClickHouse的隐秘基地,会定期共享ClickHouse的最新资讯、趣闻杂谈、使用阅历和原理剖析。
点击上方“Python爬虫与数据挖掘”,进行关注
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
胡未灭,鬓先秋。泪空流。
各位,今年 ClickHouse 最王炸的功能来啦,没错,就是期盼已久的 Projection (投影)?功能。ClickHouse 现在的功能已经格外丰富强大了,但是社区用现实告知我们,还可以进一步做的更好:)
不晓得你有没有遇到过这些情况:
1)MergeTree 只支持一种排序规章
建表的时候,Order By 同时打算了主键稀疏索引和数据的排序,假设 :
Order BY A,B,C
那么通常过滤查询 Where A 会很快,但是 Where C 会慢一些。
2)物化视图不够智能
针对固定的查询主题,我们会基于一张底表构建很多物化视图,以挂念更进一步提升查询功能、提升QPS、降低资源开销。
物化视图虽然效果显著,但是却不够智能。物化视图本质上一张独立的表,通过原表的触发器,实时的向视图表写入数据。
既然物化视图也是独立的表,那么自然就会存在与原表数据全都性的问题。假如物化视图很多,维护起来也是一个问题。
Projection 功能的消灭,完善处理了上述的问题。Projection 的概念出自?《C-Store: A Column-oriented DBMS》这篇论文,作者是2021年图灵奖获得者、Vertica 之父,Mike Stonebraker。
Projection 意指一组列的组合,可以依据与原表不同的排序存储,并且支持聚合函数的查询。
来自快手的 Amos Bird(郑天祺) 自创了这个思想,在 ClickHouse 中实现了 Projection 的功能,并贡献到社区。
ClickHouse?Projection 可以看做是一种愈加智能的物化视图,它有如下特点:
part-level 存储
相比一般物化视图是一张独立的表,Projection 物化的数据就保存在原表的分区名目中,支持明细数据的一般Projection 和 预聚合Projection
无感使用,自动命中
可以对一张 MergeTree 创建多个 Projection ,当执行 Select 语句的时候,能依据查询范围,自动婚配最优的 Projection 供应查询加速。假如没有命中 Projection , 就直接查询底表。
????
数据同源、同生共死
????????由于物化的数据保存在原表的分区,所以数据的更新、合并都是同源的,也就不会消灭不全都的情况了
这么干讲可能还比较笼统,直接来看用例吧,这里直接使用官方的测试数据集?hits_100m_obfuscated,这张表有?1亿 数据:
SELECT count(*)
FROM hits_100m_obfuscated
Query id: 813ba930-d299-47d8-9ac3-6d7dbde075b1
┌───count()─┐
│ 100000000 │
└───────────┘
1 rows in set. Elapsed: 0.004 sec.
Order By 是:
ENGINE = MergeTree
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID), EventTime)
在没有?Projection 的时候,查询非主键?WatchID:
SELECT WatchID
FROM hits_100m_obfuscated
WHERE WatchID = 5814563137538961516
Query id: 20210b52-cac0-43b7-baf6-1931b94864a6
┌─────────────WatchID─┐
│ 5814563137538961516 │
└─────────────────────┘
1 rows in set. Elapsed: 0.262 sec. Processed 100.00 million rows, 800.00 MB (380.95 million rows/s., 3.05 GB/s.)
结果全表扫描了 800MB 共 1亿行数据。
现在创建一个?Projection?,为特定的 Where
文档评论(0)