15.1. 윈 토토 쿼리가 작동하는 방법#

Optimizer가 윈 토토 쿼리가 특정 쿼리의 가장 빠른 실행 전략이라고 판단하면 a가 포함 된 쿼리 계획을 만듭니다.수집또는합병 수집노드. 간단한 예는 다음과 같습니다.

'%x%'와 같은 필러가있는 pgbench_accounts에서 * 선택 *;

모든 경우에수집또는합병 수집노드에는 정확히 하나의 아동 계획이 있으며, 이는 평행하게 실행되는 계획의 일부입니다. 인 경우수집또는합병 수집노드는 플랜 트리의 맨 위에 있으며 전체 쿼리가 윈 토토로 실행됩니다. 플랜 트리의 다른 곳이라면 아래 계획의 일부만이 윈 토토로 실행됩니다.수집노드 자체; 그 계획 노드는의 자녀이기 때문에수집노드, 윈 토토로 실행됩니다.

설명 사용, 플래너가 선택한 근로자 수를 볼 수 있습니다. 때수집쿼리 실행 중에 노드에 도달하면 사용자 세션을 구현하는 프로세스가 여러 가지를 요청합니다PostgreSQL :플래너가 선택한 근로자 수와 같습니다. 플래너가 사용하는 것을 고려할 배경 작업자의 수는 최대로 제한됩니다max_parallel_workers_per_gather. 한 번에 존재할 수있는 총 배경 작업자의 총 수는 두 가지 모두에 의해 제한됩니다max_worker_processesandmax_parallel_workers. 따라서 윈 토토 쿼리가 계획보다 적은 근로자로 실행되거나 노동자가 전혀 없을 수도 있습니다.max_worker_processesandmax_parallel_workers더 많은 근로자가 동시에 또는 대안 적으로 줄일 수 있도록max_parallel_workers_per_gather따라서 플래너가 더 적은 수의 근로자를 요청하도록합니다.

주어진 병렬 쿼리에 대해 성공적으로 시작된 모든 배경 작업자 프로세스는 계획의 병렬 부분을 실행합니다. 지도자는 또한 계획의 해당 부분을 실행하지만 추가 책임이 있습니다. 또한 근로자가 생성 한 모든 튜플도 읽어야합니다.수집노드 또는합병 수집노드. 그러한 경우, 지도자는 계획의 병렬 부분을 실행하는 일을 거의하지 않을 것입니다.

계획의 평행 부분 상단에있는 노드가합병 수집대신수집, 계획의 윈 토토 부분을 실행하는 각 프로세스는 정렬 된 순서로 튜플을 생성하고 리더가 주문 보존 병합을 수행하고 있음을 나타냅니다. 대조적으로,수집근로자의 튜플을 편리한 순서로 읽고 존재했던 모든 종류의 순서를 파괴합니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다.이 양식문서 문제를보고하려면