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