É difícil encontrar um título adequado para isso, portanto, quaisquer sugestões e edições são bem-vindas.
Ao ANALISAR um plano, você é informado quando determinados nós emitiram a primeira linha e quando emitiram sua última linha. Alguns nós podem começar a operar mesmo sem ter o conjunto de resultados completo (um loop aninhado que faz uma pesquisa de índice recebendo linhas de um nó interno pode teoricamente já começar a fazer isso antes mesmo do nó interno ser totalmente avaliado, quando o nó interno já está retornando um subconjunto dos resultados).
Eu posso ver essas actual times
sobreposições nas avaliações, o que significa que alguns nós já devem começar a ser avaliados antes mesmo de terminar os nós internos.
Minhas perguntas:
- Todos os nós (a menos que um nó de processamento paralelo seja especificado) são executados sequencialmente, o que significa que eles só começam a trabalhar quando o nó interno é concluído? (nota: considerando as sobreposições de tempo reais na análise, acho que não)
- Se eles não são executados sequencialmente, mas apenas executados em um único thread, eles são otimizados para IO, como em, enquanto um nó interno está fazendo algo pesado em IO, é um nó externo fazendo cálculos, se possível, e retornando assim que o nó interno está pronto?
- Ou, alternativamente, eles realmente têm apenas vários threads, um para cada nó, sendo ativados assim que tiverem algo para fazer?
Sei que internamente as coisas são mais complicadas do que isso, mas acho que esta é uma boa explicação de alto nível dos meus pensamentos.