| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 언제 병렬 젠 토토 사용할 수 있습니까? | PostgreSQL : 문서 : 9.6 : 스포츠 토토 결과 쿼리 | 15장. 롤 토토 쿼리 | PostgreSQL : 문서 : 9.6 : 스포츠 토토 사이트 안전 |
각 작업자는 계획의 롤 토토 부분을 완료하기 때문에 실행하기 때문에 단순히 일반 쿼리 계획을 사용하여 여러 작업자를 사용하여 실행하는 것은 불가능합니다. 각 작업자는 출력 결과 집합의 전체 복사본을 생성하므로 쿼리가 평소보다 빠르게 실행되지는 않지만 잘못된 결과가 생성됩니다. 대신, 계획의 롤 토토 부분은 쿼리 최적화 프로그램에 내부적으로 알려진 것이어야 합니다.부분 계획; 즉, 필요한 각 출력 행이 협력 프로세스 중 정확히 하나에 의해 생성되도록 보장되는 방식으로 계획을 실행하는 각 프로세스가 출력 행의 하위 집합만 생성하도록 구성되어야 합니다.
현재 병렬 쿼리와 함께 작동하도록 수정된 유일한 스캔 유형은 순차 스캔입니다. 따라서 병렬 계획의 구동 테이블은 항상 다음을 사용하여 스캔됩니다.롤 토토 시퀀스 스캔. 관계의 블록은 협력 프로세스 간에 나누어집니다. 블록은 한 번에 하나씩 전달되므로 관계에 대한 액세스는 순차적으로 유지됩니다. 각 프로세스는 새 페이지를 요청하기 전에 할당된 페이지의 모든 튜플을 방문합니다.
구동 테이블은 중첩 루프 또는 해시 조인을 사용하여 하나 이상의 다른 테이블에 조인될 수 있습니다. 조인의 내부 측면은 병렬 작업자 내에서 실행하는 것이 안전한 경우 플래너가 지원하는 모든 종류의 비병렬 계획일 수 있습니다. 예를 들어 조인의 외부에서 가져온 값을 조회하는 인덱스 스캔일 수 있습니다. 각 작업자는 조인의 내부 측면을 완전히 실행합니다. 이는 해시 조인의 경우 각 작업자 프로세스에 동일한 해시 테이블이 구축됨을 의미합니다.
PostgreSQL두 단계로 집계하여 병렬 집계를 지원합니다. 먼저 쿼리의 병렬 부분에 참여하는 각 프로세스는 집계 단계를 수행하여 해당 프로세스가 인식하는 각 그룹에 대한 부분 결과를 생성합니다. 이는 계획에 다음과 같이 반영됩니다.부분 집계노드. 둘째, 부분 결과는 다음을 통해 리더에게 전송됩니다.집결노드. 마지막으로 리더는 최종 결과를 생성하기 위해 모든 작업자의 결과를 다시 집계합니다. 이는 계획에 다음과 같이 반영됩니다.집계 완료노드.
왜냐하면집계 완료노드는 리더 프로세스에서 실행되므로 입력 행 수에 비해 상대적으로 많은 수의 그룹을 생성하는 쿼리는 쿼리 플래너에 덜 선호되는 것으로 나타납니다. 예를 들어 최악의 시나리오에서는 다음과 같은 그룹 수가 표시됩니다.집계 완료노드는 다음의 모든 작업자 프로세스에서 본 입력 행 수만큼 많을 수 있습니다.부분 집계스테이지. 이러한 경우 롤 토토 집계를 사용해도 성능상 이점이 전혀 없습니다. 쿼리 플래너는 계획 프로세스 중에 이를 고려하므로 이 시나리오에서는 롤 토토 집계를 선택하지 않을 것입니다.
병렬 집계는 모든 상황에서 지원되지 않습니다. 각 집계는 다음과 같아야 합니다.PostgreSQL : 문서 : 9.6 : 스포츠 토토 사이트 안전병렬 처리를 위한 것이며 결합 기능이 있어야 합니다. 집계에 다음 유형의 전환 상태가 있는 경우내부, 직렬화 및 역직렬화 기능이 있어야 합니다. 참조PostgreSQL : 문서 : 9.6 : 범퍼카 토토 생성자세한 내용을 확인하세요. 집계 함수 호출에 다음이 포함된 경우 병렬 집계가 지원되지 않습니다.독특또는주문 기준절이며 순서가 지정된 집합 집계 또는 쿼리에 포함된 경우에도 지원되지 않습니다.그룹화 세트. 쿼리에 관련된 모든 조인이 계획의 롤 토토 부분에도 포함되는 경우에만 사용할 수 있습니다.
그렇게 할 것으로 예상되는 쿼리가 롤 토토 계획을 생성하지 않으면 축소를 시도해 볼 수 있습니다.parallel_setup_cost또는parallel_tuple_cost. 물론, 이 계획은 기획자가 선호한 직렬 계획보다 느릴 수도 있지만 항상 그런 것은 아닙니다. 이러한 설정 값이 매우 작아도(예: 둘 다 0으로 설정한 후) 롤 토토 계획을 얻지 못하는 경우 쿼리 플래너가 쿼리에 대한 롤 토토 계획을 생성할 수 없는 이유가 있을 수 있습니다. 보다PostgreSQL : 문서 : 9.6 : 언제 병렬 젠 토토 사용할 수 있습니까?그리고PostgreSQL : 문서 : 9.6 : 스포츠 토토 사이트 안전이런 경우가 발생할 수 있는 이유에 대한 정보.
병렬 계획을 실행할 때 다음을 사용할 수 있습니다.설명(분석, 자세한 설명)각 계획 노드에 대한 작업자별 통계를 표시합니다. 이는 작업이 모든 계획 노드 간에 균등하게 분배되는지 확인하고 더 일반적으로 계획의 성능 특성을 이해하는 데 유용할 수 있습니다.