当前位置 : 主页 > 编程语言 > 其它开发 >

Clickhouse中的预聚合引擎

来源:互联网 收集:自由互联 发布时间:2022-05-17
作者: LemonNan 原文地址: https://mp.weixin.qq.com/s/qXlmGTr4C1NjodXeM4V9pA 注: 转载需注明作者及原文地址 介绍 本文将介绍 Clickhouse 中的 SummingMergeTree 以及 AggregatingMergeTree 预聚合引擎,它们均继承

作者: LemonNan

原文地址: https://mp.weixin.qq.com/s/qXlmGTr4C1NjodXeM4V9pA

注: 转载需注明作者及原文地址

介绍

本文将介绍 Clickhouse 中的 SummingMergeTree 以及 AggregatingMergeTree 预聚合引擎,它们均继承自 MergeTree ,属于 MergeTree 引擎家族,关于 MergeTree 还没有看过的朋友可以先看一下之前的文章:MergeTree 索引原理,这里就只讨论这两个引擎的使用。

SummingMergeTree

SummingMergeTree 引擎会在数据插入后,定期进行合并,Clickhouse 会将同一个分区内相同主键的数据会合并成一行,如果同时存在多个分区,则非常可能存在多行相同主键的数据,所以在进行查询的时候,需要使用 sum() 以及 group by 进行聚合。一个主键如果对应非常多的数据行,使用 SummingMergeTree 能 非常有效的减少数据存储所占用的空间(仅有预聚合引擎表的情况)以及加快聚合查询

合并规则
  • 默认为除主键外所有的数值类型字段合并求和,列的集合参数由表定义时 SummingMergeTree([columns]) 的column 决定,column 字段不允许出现在主键中以及必须为数值类型,如果建表时没有指定 column ,则默认为 除主键外所有的数值类型字段
  • 如果合并时所有列中的数据都为0,该主键行数据将会被删除
  • 如果列不在主键中,且不在汇总字段中,则从现有的列中随机选一个值
  • 不会合并位于主键中的字段
举个
上一篇:面向对象编程(C++篇3)——析构
下一篇:没有了
网友评论