ClickHouse Projection的使用小结

2022-03-28  本文已影响0人  淡淡的小番茄

物化视图 和 Projection技术其实都是预聚合的思路。ClickHouse release v22.2版本已经默认将Projection功能开启(allow_experimental_projection_optimization )。 2022-03-17日ClickHouse release v22.3-lts已经发布。大家可以基于此版本来使用Projection功能。

物化视图和Projection的功能对比

较物化视图最大的优点:Projection可以保证数据一致性。物化视图可以理解为触发的机制,写入base表的时候,一起写入物化视图,两个过程无法保证一致性。从业务功能方面两者解决的问题的场景是一样的。都是通过预聚合方式,提前将数据聚合好。相比而言,物化视图灵活性会更优,一般来说都是通过物化视图将源表数据抽取到新表中,这样我们可以在新表上按照业务场景灵活的进行分区、索引操作。这些在Projection上是做不到的。尤其对于聚合前后数据量相当的场景,如果对一致性要求不高的场景,使用物化视图会是更好的选择。

Projection的使用和介绍

大家可以参考如下文档:

https://presentations.clickhouse.com/percona2021/projections.pdf

写的还是非常详细的。

Projection新建好后,执行正常的业务SQL,怎么判断是否命中了,联调的时候可以将参数:force_optimize_projection配置为1,查询的时候如果没有命中Projection,会抛出错误信息的。生产环境可以别这么做,此参数默认值是0。

查询优化的思路

1)聚合查询(聚合后数据较聚合前数据量少很多)

一致性要求高场景,使用Projection。对一致性要求低,或者想对聚合后的表做更灵活的配置,请选用物化视图。

2)明细查询或者聚合后数据较聚合前数据量相当

建议使用二级索引(跳数索引)来进行查询优化。

上一篇下一篇

猜你喜欢

热点阅读