投影中的预聚合数据

如果查询使用了聚合函数,例如 SUMCOUNT,那么它们在使用已经包含聚合数据的投影时,可以更有效地执行。此效率提升在对大规模数据进行查询时尤其显著。

例如,电网公司要读取 3000 万智能电表的数据,而这些电表每五分钟提供一次数据。公司会将每个读数记录在数据库表中。在某个给定年度,此表中添加了三万亿条记录。

电网公司可以使用包含聚合函数的查询来分析这些记录,以便执行以下任务:

  • 建立使用模式。

  • 检测欺诈。

  • 衡量与天气模式或价格变动等外部事件的相关性。

要优化查询响应时间,您可以创建聚合投影,由该投影存储聚合后的数据。

聚合投影

Vertica 提供几种类型的投影来存储从聚合函数或表达式中返回的数据。

  • 实时聚合投影:包含通过锚表中的列聚合列值的列的投影。您还可以定义包括 用户定义的变换函数 的实时聚合投影。

  • Top-K 投影:一种实时聚合投影,用于从选定行的一个分区中返回前 k 行。创建一个满足 Top-K 查询条件的 Top-K 投影。

  • 预聚合 UDTF 结果的投影:调用用户定义的转换函数 (UDTF) 的实时聚合投影。为了在查询这种类型的投影时最大限度降低开销,Vertica 会在后台处理 UDTF 函数,并将其结果存储在磁盘上。

  • 包含表达式的投影:具有通过锚表列计算列值的列的投影。

建议使用

  • 针对大型数据集进行查询时,聚合投影最为有用。

  • 为获得最佳查询性能,LAP 投影的大小应该是锚表的小子集,理想情况下是锚表的 1% 到 10 % 之间或更小(如有可能)。

限制

  • 如果在具有实时聚合投影的目标表上执行 MERGE 操作,则这些操作必须优化

  • 您不能使用实时聚合投影更新或删除临时表中的数据。

要求

手动恢复未正常关闭的数据库时,实时聚合投影可能需要一些时间来刷新。