很难为此找到合适的标题,因此欢迎任何建议和编辑。
在分析计划时,您会被告知某些节点何时发出第一行以及何时发出最后一行。一些节点甚至可以在没有完整结果集的情况下开始运行(一个嵌套循环从内部节点接收行的索引查找在理论上已经开始这样做,甚至在内部节点被完全评估之前,当内部节点已经返回一个结果的子集)。
我可以actual times
在评估中看到这些重叠,这意味着一些节点必须已经开始评估,甚至在内部节点完成之前。
我的问题:
- 所有节点(除非指定了并行处理节点)是否按顺序运行,这意味着它们仅在内部节点完成后才真正开始工作?(注意:考虑到分析中的实际时间重叠,我不这么认为)
- 如果它们不是按顺序运行,而是只在单个线程中运行,那么它们是否运行 IO 优化,例如,当一个内部节点正在做一些 IO 繁重的事情时,一个外部节点是否在可能的情况下进行计算,并在内部节点准备好了吗?
- 或者,他们实际上是否只有多个线程,每个节点一个,一旦他们有事要做就醒来?
我知道内部情况比这更复杂,但我认为这是对我的想法的一个很好的高级解释。