쿼리 플래너가 어떤 상황에서도 병렬 쿼리 계획을 생성하지 못하게 할 수있는 몇 가지 설정이 있습니다. 병렬 쿼리 계획을 생성하려면 다음 설정을 표시된대로 구성해야합니다.
max_parallel_workers_per_gather0보다 큰 값으로 설정해야합니다. 이것은 더 이상 근로자를 사용하지 않아야한다는보다 일반적인 원칙의 특별한 경우입니다.max_parallel_workers_per_gather
.
또한 시스템은 단일 사용자 모드에서 실행되지 않아야합니다. 이 상황에서 전체 데이터베이스 시스템이 단일 프로세스로 실행되고 있으므로 배경 작업자는 사용할 수 없습니다.
일반적으로 병렬 쿼리 계획이 생성 될 수있는 경우에도 플래너는 다음 중 하나가 사실이라면 주어진 쿼리에 대해 이들을 생성하지 않습니다 :.
쿼리는 모든 데이터를 작성하거나 데이터베이스 행을 잠그는 것입니다. 쿼리에 최상위 수준 또는 CTE 내에서 데이터 수정 작업이 포함 된 경우 해당 쿼리에 대한 병렬 계획이 생성되지 않습니다. 예외적으로 새 테이블을 만들어 채우는 다음 명령은 기본에 병렬 계획을 사용할 수 있습니다select
토토 베이의 일부 :
테이블 생성 ... as
선택
구체화 된보기 만들기
상쾌한 뷰
실행 중에 토토 베이가 중단 될 수 있습니다. 시스템이 부분적 또는 점진적 실행이 발생할 수 있다고 생각하는 모든 상황에서는 병렬 계획이 생성되지 않습니다. 예를 들어,를 사용하여 만든 커서토토 결과 PostgreSQL : 문서 : 17 : 선언병렬 계획을 사용하지 않습니다. 마찬가지로 양식의 PL/PGSQL 루프토토 베이 루프의 x. 엔드 루프
병렬 토토 베이 시스템이 병렬 토토 베이가 활성화되어있는 동안 루프의 코드가 안전한지 확인할 수 없기 때문에 병렬 계획을 사용하지 않습니다..
토토 베이는 표시된 기능을 사용합니다병렬 불안한
. 대부분의 시스템 정의 기능은입니다.Parallel Safe
, 그러나 사용자 정의 함수는 표시병렬 불안한
기본적으로. 에 대한 토론보기PostgreSQL : 문서 : 17 : 15.4. 롤 토토 안전.
쿼리가 이미 평행 한 다른 쿼리 내부에서 실행 중입니다. 예를 들어, 병렬 쿼리로 호출 된 함수가 SQL 쿼리 자체를 발행하는 경우 해당 쿼리는 병렬 계획을 사용하지 않습니다. 이것은 현재 구현의 한계이지만, 매우 많은 수의 프로세스를 사용하여 단일 쿼리를 초래할 수 있으므로이 제한을 제거하는 것이 바람직하지 않을 수 있습니다..
특정 토토 베이에 대해 병렬 토토 베이 계획이 생성 되더라도 실행 시간에 병렬로 해당 계획을 실행하는 것이 불가능한 몇 가지 상황이 있습니다. 이런 일이 발생하면 리더는 아래의 계획 부분을 실행합니다.수집
거의 마치 마치 마치 마치 마치수집
노드가 없었다. 다음 조건이 충족되면 발생합니다.
총 배경 근로자 수가 초과 할 수 없다는 제한으로 인해 배경 작업자를 얻을 수 없습니다.max_worker_processes.
병렬 토토 베이 목적으로 출시 된 총 배경 작업자 수가 초과 할 수 없다는 제한으로 인해 배경 작업자를 얻을 수 없습니다.max_parallel_workers.
클라이언트는 0이 아닌 페치 카운트로 실행 메시지를 보냅니다. 에 대한 토론보기확장 토토 베이 프로토콜. 부터토토 사이트 추천 : 문서 : 17 : 32 장. LIBPQ - C 라이브러리현재 그러한 메시지를 보낼 방법을 제공하지 않습니다. 이는 LIBPQ에 의존하지 않는 클라이언트를 사용할 때만 발생할 수 있습니다. 이것이 자주 발생하는 경우 설정하는 것이 좋습니다max_parallel_workers_per_gather일련의 실행할 때 차선책이 될 수있는 토토 베이 계획을 생성하지 않기 위해 가능성이있는 세션에서 0에서 0까지.
문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면