ODCIAggregateMerge 不启用parallel_enabled

问题描述 投票:0回答:2

这些是来自 Oracle 文档的引用:

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

,

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

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


因此,我们

没有

将我们的函数声明为parallel_enabled,而是在 ODCIAggregateMerge 中返回 ODCIconst.Error“以防万一”。 但是,第一个引用文档声称,即使在串行评估中也可能发生合并。

超级聚合(rollup、cube)是明显的例子,但是还有其他的吗?


我完全无法用简单的分组来重现它,如果没有parallel_enabled,合并永远不会被调用,而且似乎总是在组内创建一个上下文。

可以安全地假设如果没有parallel_enabled 设置,合并将永远不会运行吗?

您见过该规则的反例吗?


sql oracle plsql aggregate
2个回答
0
投票


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.