15.2. 병렬 토토 베이를 언제 사용할 수 있습니까?#

쿼리 플래너가 어떤 상황에서도 병렬 쿼리 계획을 생성하지 못하게 할 수있는 몇 가지 설정이 있습니다. 병렬 쿼리 계획을 생성하려면 다음 설정을 표시된대로 구성해야합니다.

  • 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까지.

정정 제출

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