投影中的预聚合数据
如果查询使用了聚合函数,例如 SUM 和 COUNT,那么它们在使用已经包含聚合数据的投影时,可以更有效地执行。此效率提升在对大规模数据进行查询时尤其显著。
例如,电网公司要读取 3000 万智能电表的数据,而这些电表每五分钟提供一次数据。公司会将每个读数记录在数据库表中。在某个给定年度,此表中添加了三万亿条记录。
电网公司可以使用包含聚合函数的查询来分析这些记录,以便执行以下任务:
-
建立使用模式。
-
检测欺诈。
-
衡量与天气模式或价格变动等外部事件的相关性。
要优化查询响应时间,您可以创建聚合投影,由该投影存储聚合后的数据。
聚合投影
Vertica 提供几种类型的投影来存储从聚合函数或表达式中返回的数据。
-
Top-K 投影:一种实时聚合投影,用于从选定行的一个分区中返回前 k 行。创建一个满足 Top-K 查询条件的 Top-K 投影。
-
预聚合 UDTF 结果的投影:调用用户定义的转换函数 (UDTF) 的实时聚合投影。为了在查询这种类型的投影时最大限度降低开销,Vertica 会在后台处理 UDTF 函数,并将其结果存储在磁盘上。
-
包含表达式的投影:具有通过锚表列计算列值的列的投影。
建议使用
-
针对大型数据集进行查询时,聚合投影最为有用。
-
为获得最佳查询性能,LAP 投影的大小应该是锚表的小子集,理想情况下是锚表的 1% 到 10 % 之间或更小(如有可能)。
限制
-
如果在具有实时聚合投影的目标表上执行 MERGE 操作,则这些操作必须优化。
-
您不能使用实时聚合投影更新或删除临时表中的数据。
要求
手动恢复未正常关闭的数据库时,实时聚合投影可能需要一些时间来刷新。