小编pie*_*zol的帖子

没有parallel_enabled的ODCIAggregateMerge

这些是Oracle docs的引文:

[可选]通过合并两个聚合上下文合并并返回单个上下文。此操作组合子集上的聚合结果,以获得整个集合上的聚合。在对集合进行串行或并行评估时,可能需要执行此额外步骤。如果需要,它在步骤4之前执行:

在此类汇总操作中,将调用ODCIAggregateMerge()接口来计算超级聚合值。

我们有一个聚合函数,我们不想并行运行。
原因是上下文的合并将消耗资源,并且将迫使我们使用与现在使用的数据结构不同的数据结构,从而有效地抵消了并行执行带来的任何性能优势。

因此,我们没有函数声明为parallel_enabled,而是以防万一的方式返回ODCIAggregateMerge中的ODCIconst.Error。

但是,第一个引用文档声称,即使在串行评估中也可能发生合并。
超级聚合(汇总,多维数据集)是明显的示例,但是还有其他示例吗?

我完全无法通过简单的分组依据来重现它,如果没有parallel_enabled,就永远不会调用merge,并且似乎在该分组中始终只创建一个上下文。

是否可以安全地假设没有parallel_enabled设置,合并将永远不会运行?
您见过该规则的反例吗?

sql oracle plsql aggregate

8
推荐指数
1
解决办法
145
查看次数

标签 统计

aggregate ×1

oracle ×1

plsql ×1

sql ×1