이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

51.6.집행자

theexecutorPlanner/Optimizer가 작성한 계획을 가져 와서 재귀 적으로 처리하여 필요한 행 세트를 추출합니다. 이것은 본질적으로 수요가 많은 파이프 라인 메커니즘입니다.

구체적인 예를 제공하려면 상단 노드가 A라고 가정합니다.mergejoin노드. 병합을 수행하기 전에 두 행을 가져와야합니다 (각 하위 플랜에서 하나).LeftTree). 새로운 상단 노드 (왼쪽 서브 플랜의 상단 노드)는 A입니다.Sort11151_11235sortSeqscan테이블의 실제 읽기를 나타내는 노드. 이 노드를 실행하면 executor가 테이블에서 행을 가져와 호출 노드로 반환합니다.sort노드는 자식을 반복해서 호출하여 모든 행을 정렬 할 것입니다. 입력이 소진되면 (하위 노드가 행 대신 널을 반환하는 하위 노드로 표시),Sort코드는 정렬을 수행하고 마지막으로 첫 번째 출력 행, 즉 첫 번째 출력 행을 반환 할 수 있습니다. 나머지 행을 저장하여 나중에 요구에 응답하여 정렬 된 순서로 전달할 수 있도록 저장됩니다.

theMergejoin노드는 오른쪽 서브 플랜에서 첫 번째 행을 요구합니다. 그런 다음 두 행을 비교하여 결합 할 수 있는지 확인합니다.Mergejoin노드를 반환하여 더 이상 결합 행을 형성 할 수 없음을 나타냅니다.

복잡한 쿼리에는 많은 수준의 계획 노드가 포함될 수 있지만 일반적인 접근 방식은 동일합니다. 각 노드는 호출 할 때마다 다음 출력 행을 계산하고 반환합니다. 각 노드는 또한 플래너가 할당 한 선택 또는 프로젝션 표현을 적용 할 책임이 있습니다.

집행자 메커니즘은 4 가지 기본 SQL 쿼리 유형을 모두 평가하는 데 사용됩니다.select,삽입,업데이트삭제. 을 위한select, 최상위 종료 코드는 쿼리 플랜 트리에서 반환 한 각 행을 클라이언트로 보내면됩니다.삽입 ... 선택,업데이트삭제효과적으로selectS로 호출 된 특별한 최상위 계획 노드에 따라modifyTable.

삽입 ... 선택행을 최대로 먹이기modifyTable삽입. 을 위한업데이트, 플래너는 각 계산 된 행이 모든 업데이트 된 열 값과를 포함하도록 배열합니다.TID13775_13855modifyTable노드는 정보를 사용하여 새 업데이트 행을 생성하고 이전 행을 표시합니다. 을 위한삭제, 계획에 의해 실제로 반환되는 유일한 열은 TID이고입니다.modifyTable노드는 단순히 TID를 사용하여 각 대상 행을 방문하여 삭제했습니다.

간단한삽입 ... 값명령은 단일로 구성된 사소한 계획 트리를 만듭니다결과노드는 하나의 결과 행 만 계산하여이를 최대로 공급합니다modifyTable삽입을 수행하려면