0

您能否通过以下示例帮助我理解这一点。

在此处输入图像描述

按 cust_id、item_id 分组。

在排序输入和未排序输入的两种情况下,哪些记录将处理到缓存(索引/数据)?如果缓存内存用完会怎样?它使用哪个算法在内部执行聚合计算?

4

1 回答 1

1

我不知道内部算法,但是在未排序模式下,聚合器将所有行存储在缓存中并等待最后一行是正常的,因为它可能是根据聚合器规则必须返回的第一行!聚合器永远不会抱怨传入行的顺序。使用缓存时,它会先在内存中存储行,然后当分配的内存已满时,它会将缓存推送到磁盘。如果它用完磁盘空间,会话将失败(并且可能由于磁盘已满而导致其他会话失败)。您将不得不手动清理这些文件。

在排序模式下,没有这样的问题:行进入准备聚合的组,并且一旦接收到组中的所有行,聚合的行就会出去,当键的值之一发生变化时会检测到这一点。如果行不按预期顺序,聚合器将抱怨并停止。然而,它将问题向上推到排序部分,这可能是一个Sorter,它本身可以使用大量缓存,或者是ORDER BY在 SQL 查询中具有可能占用数据库端资源的子句的数据库。

还要注意 SQLORDER BY可能使用与 Informatica 不同的语言环境。

于 2020-04-20T07:38:51.017 回答