15.1. 병렬 토토 커뮤니티 작동하는 방법

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

'%x%'와 같은 필러가있는 pgbench_accounts에서 * 선택 *;
                                     쿼리 계획                                      
---------------------------------------------------------------------------------------------
 수집 (비용 = 1000.00..217018.43 줄 = 1 너비 = 97)
   노동자 계획 : 2
   - PGBENCH_ACCOUTTS에서 병렬 SEQ 스캔 (비용 = 0.00..216018.33 행 = 1 너비 = 97)
         필터 : (필러 ~~ '%x%':: 텍스트)
(4 줄)

모든 경우에수집또는합병 수집노드에는 정확히 하나의 아동 계획이 있으며,이 계획은 평행하게 실행될 계획의 일부입니다. 인 경우수집또는합병 수집노드는 플랜 트리의 맨 위에 있으며 전체 토토 커뮤니티 병렬로 실행됩니다. 플랜 트리의 다른 곳이라면 아래 계획의 일부만이 병렬로 실행됩니다. 위의 예에서 쿼리는 하나의 테이블 만 액세스하므로 이외의 계획 노드는 하나뿐입니다.수집노드 자체; 그 계획 노드는의 자녀이기 때문에수집노드, 병렬로 실행됩니다.

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

주어진 병렬 쿼리에 대해 성공적으로 시작된 모든 배경 작업자 프로세스는 계획의 병렬 부분을 실행합니다. 지도자는 또한 계획의 해당 부분을 실행하지만 추가 책임이 있습니다. 또한 근로자가 생성 한 모든 튜플도 읽어야합니다. 계획의 평행 부분이 적은 수의 튜플 만 생성하면 리더는 종종 추가 작업자와 매우 흡사하여 쿼리 실행 속도를 높입니다. 반대로, 계획의 평행 부분이 많은 수의 튜플을 생성 할 때, 리더는 거의 전적으로 작업자가 생성 한 튜플을 읽고 계획 노드에 필요한 추가 처리 단계를 수행 할 수 있습니다.수집노드 또는합병 수집노드. 그러한 경우, 지도자는 계획의 병렬 부분을 실행하는 일을 거의하지 않을 것입니다.

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

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면