이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다메이저 토토 사이트 : 문서 : 17 : 50.6. 집행자버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

44.6. 집행자

theexecutor생성 된 계획을 가져옵니다 플래너/최적화에 의해 재귀 적으로 처리하여 추출합니다 필요한 행 세트. 이것은 본질적으로 수요 풀입니다 파이프 라인 메커니즘. 계획 노드가 호출 될 때마다해야합니다 한 줄 하나를 더 배달하거나 배송이 완료되었다고보고합니다. 줄.

구체적인 예를 제공하려면 상단 노드가 A라고 가정합니다.mergejoin노드. 병합이있을 수 있습니다 완료된 두 행을 가져와야합니다 (각 하위 플랜에서 하나). 그래서 집행자는 재귀 적으로 스스로를 호출하여 하위 계획을 처리합니다 (IT 첨부 된 하위 플랜으로 시작합니다LeftTree). 새로운 상단 노드 (의 상단 노드 왼쪽 하위 플랜)는 at입니다.sort노드 입력 행을 얻으려면 다시 재귀가 필요합니다. 아이 의 노드sortSeqscan노드, 실제 읽기를 나타냅니다 테이블. 이 노드의 실행은 집행자가 행을 가져 오게합니다. 테이블에서 호출 노드로 반환합니다. 그만큼Sort노드는 반복적으로 자녀를 호출합니다 정렬 할 모든 행을 얻으려면. 입력이 소진 될 때 (자식 노드가 표시 한대로 행),Sort코드는 정렬을 수행합니다. 그리고 마지막으로 첫 번째 출력 행, 즉 먼저 정렬 된 순서. 나머지 행을 저장합니다 나중에 응답하여 정렬 된 순서로 전달할 수 있습니다. 요구.

themergejoin노드와 유사하게 요구됩니다 오른쪽 하위 플랜에서 첫 번째 줄. 그런 다음 두 가지를 비교합니다 그들이 합류 할 수 있는지 확인하는 행; 그렇다면 가입 행을 반환합니다 발신자에게. 다음 통화에서 또는 가입 할 수없는 경우 즉시 현재 입력 한 쌍의 입력은 다음 행으로 진행됩니다. 테이블 또는 다른 사람 (비교가 어떻게 나온 방법에 따라), 그리고 다시 경기를 확인합니다. 결국 하나의 하위 플랜 또는 다른 사람은 지쳐졌고Mergejoin노드를 반환하여 더 이상 결합 행이 없음을 나타냅니다. 형성.

복잡한 쿼리는 많은 수준의 계획 노드를 포함 할 수 있지만 일반적인 접근 방식은 동일합니다. 각 노드는 다음과 같습니다. 다음 출력 행이 호출 될 때마다. 각 노드도 있습니다 선택 또는 투영 표현식을 적용 할 책임이 있습니다 플래너에 의해 할당되었습니다.

집행자 메커니즘은 4 개의 기본 SQL을 모두 평가하는 데 사용됩니다. 쿼리 유형 :select, 삽입, 업데이트삭제. 을 위한select, 최상위 기관 코드 만 있으면됩니다 쿼리 플랜 트리에서 반환 한 각 행을 클라이언트로 보내십시오. 을 위한삽입, 각각의 반환 된 행입니다 에 지정된 대상 테이블에 삽입삽입. 이것은 특별한 최상위 계획으로 이루어집니다 노드 호출modifyTable. (간단한삽입 ... 값명령을 생성합니다 단일로 구성된 사소한 계획 트리결과노드 하나만 계산하는 노드, 그리고modifyTable삽입. 하지만삽입 ... 선택can 집행자 메커니즘의 전체 힘을 요구합니다.) for업데이트, 플래너는 각 계산을 준비합니다 행에 업데이트 된 모든 열 값과가 포함됩니다.TID13981_14060modifyTableNode는 정보를 사용하여 새 업데이트 행을 생성하고 삭제 된 오래된 행을 표시하십시오. 을 위한삭제, 실제로 계획에 의해 반환되는 유일한 열은 TID입니다. 그리고modifyTable노드는 단순히 사용합니다 TID 각 대상 행을 방문하여 삭제 된 표시.