젠 토토 9.3.25 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.3 : 배트맨 토토/최적화 | PostgreSQL : 문서 : 9.3 : PostgreSQL Internals 스포츠 토토 사이트 | 46 장. 개요 젠 토토 내부의 | 스포츠 토토 베트맨 : 문서 : 9.3 : 스포츠 토토 베트맨 카탈로그 |
executor작성된 계획을 가져옵니다 플래너/최적화기는 재귀 적으로 처리하여 추출합니다 필요한 행 세트. 이것은 본질적으로 수요 풀 파이프 라인입니다 기구. 계획 노드가 호출 될 때마다 하나를 제공해야합니다. 더 많은 행 또는 행을 전달한다고보고합니다.
구체적인 예를 제공하려면 상단 노드가 A라고 가정합니다.mergejoin노드. 병합이있을 수 있습니다 완료된 두 행을 가져와야합니다 (각 하위 플랜에서 하나). 그래서 집행자는 재귀 적으로 스스로를 호출하여 하위 계획을 처리합니다 (IT 첨부 된 하위 플랜으로 시작합니다LeftTree). 새로운 상단 노드 (의 상단 노드 왼쪽 하위 플랜)는 at입니다.sort노드 입력 행을 얻으려면 다시 재귀가 필요합니다. 아이 의 노드SortSeqscan노드, 실제 판독 값을 나타냅니다 테이블. 이 노드의 실행은 집행자가 행을 가져 오게합니다. 테이블에서 호출 노드로 반환합니다. 그만큼Sort노드는 자녀를 반복해서 전화하여 얻습니다 정렬 할 모든 행. 입력이 소진 된 경우 (AS 하위 노드가 행 대신 널을 반환하는 것으로 표시),Sort코드는 정렬을 수행합니다 첫 번째 출력 행, 즉 첫 번째 출력 행을 반환 할 수 있습니다. 정렬 된 순서. 나머지 행을 저장하여 나중에 요구에 따라 정렬 된 순서로 전달하십시오.
themergejoin노드 유사하게 요구됩니다 오른쪽 하위 플랜에서 첫 번째 줄. 그런 다음 두 행을 비교합니다 그들이 가입 할 수 있는지 확인하기 위해; 그렇다면 결합 행을 그로 반환합니다 방문객. 다음 통화에서 또는 가입 할 수없는 경우 즉시 현재 입력 쌍, 다음 테이블의 다음 행으로 발전하거나 다른 하나는 (비교가 어떻게 나왔는지에 따라), 그리고 다시 경기를 확인합니다. 결국 한 하위 계획 또는 다른 하나는입니다 지친Mergejoin노드 리턴 더 이상 결합 행을 형성 할 수 없음을 나타냅니다.
복잡한 쿼리는 많은 수준의 계획 노드를 포함 할 수 있지만 일반적인 접근 방식은 동일합니다. 각 노드는 다음과 같습니다. 다음 출력 행이 호출 될 때마다. 각 노드도 있습니다 선택 또는 투영 표현식을 적용 할 책임이 있습니다 플래너에 의해 할당되었습니다.
executor 메커니즘은 4 개의 기본 SQL을 모두 평가하는 데 사용됩니다. 쿼리 유형 :select, 삽입, 업데이트및삭제. 을 위한select, 최상위 집행자 코드 만 있으면됩니다 쿼리 플랜 트리에서 반환 한 각 행을 클라이언트로 보내십시오. 을 위한삽입, 각 반환 된 행이 삽입됩니다 에 지정된 대상 테이블로삽입. 이것은 특별한 최상위 계획으로 이루어집니다 노드 호출modifyTable. (간단한삽입 ... 값명령을 생성합니다 단일로 구성된 사소한 계획 트리결과노드는 하나의 결과 행 만 계산하고modifyTable삽입. 하지만삽입 ... 선택can 집행자 메커니즘의 전체 힘을 요구합니다.) for업데이트, 플래너는 각 계산 행을 배열합니다 모든 업데이트 된 열 값과가 포함되어 있습니다.TID13617_13694modifyTableNode는 정보를 사용하여 새 업데이트 행을 생성하고 삭제 된 오래된 행을 표시하십시오. 을 위한삭제, The 실제로 계획에 의해 반환되는 열만 그만큼modifyTable노드는 단순히 TID를 사용합니다 각 대상 행을 방문하여 삭제했습니다.