首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们知道用于行数据的数据缓存和用于组值的索引缓存。aggregator是否会在操作之前处理所有要缓存的数据?

我们知道用于行数据的数据缓存和用于组值的索引缓存。aggregator是否会在操作之前处理所有要缓存的数据?
EN

Stack Overflow用户
提问于 2020-04-19 22:03:23
回答 1查看 29关注 0票数 0

你可以通过下面的例子来帮助我理解这一点吗?

Group by cust_id,item_id。

在排序输入和未排序输入两种情况下,将处理哪些记录到缓存(索引/数据)?如果缓存耗尽了会发生什么情况?它使用哪种算法在内部执行聚合计算?

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 15:38:51

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

在排序模式中,没有这样的问题:行以组的形式进入,准备进行聚合,一旦接收到组中的所有行,聚合的行将立即发出,这是在键的一个值发生更改时检测到的。如果行未按预期顺序排列,聚合器将发出警告并停止。然而,它将问题向上推到了排序部分,这可能是一个Sorter,它本身可以使用大量缓存,也可以是在查询中包含ORDER BY子句的数据库,它可以占用数据库端的资源。

还要注意,SQL ORDER BY可能使用与Informatica不同的区域设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61305590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档