이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 57.4. 외국 데이터 포장 쿼리 메이저 토토 사이트 사이트버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

50.4. 외국 데이터 포장 쿼리 메이저 토토 사이트

FDW 콜백 함수getforeignRelsize, getforeignpathsgetforeignplan의 작업에 적합해야합니다 그만큼PostgreSQL플래너. 여기에 있습니다 그들이해야 할 일에 대한 몇 가지 메모.

정보루트Baserel양을 줄이는 데 사용할 수 있습니다 외국 테이블에서 가져와야하는 정보의 따라서 비용을 줄입니다).Baserel- Baserestrictinfo특히입니다 흥미롭게, 제한이 포함되어 있기 때문에 (여기서Clauses)를 필터링하는 데 사용해야합니다 가져 오는 행. (FDW 자체는 시행 할 필요가 없습니다 핵심 집행자가 대신 확인할 수 있듯이이 quals.)Baserel- reltargetList익숙해 질 수 있습니다 어떤 열을 가져와야하는지 결정하십시오. 그러나 그것은 단지 그것만 주목하십시오 에 의해 방출되어야하는 열을 나열합니다.Foreignscan열이 아닌 노드를 메이저 토토 사이트하십시오 Qual Evaluation에서 사용하지만 쿼리에서는 출력하지 않습니다.

FDW 계획에는 다양한 개인 필드를 사용할 수 있습니다 정보를 유지하는 기능. 일반적으로, 당신이 저장하는 모든 것에 FDW에서 개인 필드는 Palloc'd이어야하므로 계획이 끝날 때 재생.

Baserel- fdw_privateisvoidFDW에 사용할 수있는 포인터 관련 정보를 저장하기위한 계획 기능 특정 외국 테이블. 핵심 플래너는 그것을 만지지 않습니다 일 때 null로 초기화하는 것을 제외하고Baserel노드가 생성되었습니다. 통과하는 데 유용합니다 전달getforeignRelsizetogetforeignpaths및/또는getforeignpathstogetforeignplan재 계산.

getforeignpaths개인 정보를 저장하여 다른 액세스 경로의 의미 에서fdw_private필드외국 경로노드.fdw_private|List포인터이지만 실제로 무엇이든 포함 할 수 있습니다 핵심 플래너는 그것을 만지지 않기 때문에. 그러나 모범 사례 |Nodetostring, 디버깅 지원과 함께 사용합니다 백엔드에서 사용할 수 있습니다.

getforeignplan를 검사 할 수 있습니다fdw_private선택한 필드외국 경로노드 및 생성FDW_EXPRSandfdw_private에 배치 할 목록OutiseScan노드를 메이저 토토 사이트하십시오 실행 시간에 사용할 수 있습니다. 이 두 목록은 모두 있어야합니다 형식으로 표현CopyObject복사 방법을 알고 있습니다. 그만큼fdw_private목록에는 다른 제한이 없습니다 핵심 백엔드에 의해 어떤 식 으로든 해석되지 않습니다. 그만큼FDW_EXPRS목록은 그렇지 않은 경우 예상됩니다 달리기시 실행하려는 표현 나무가 포함되어 있습니다. 시간. 이 나무들은 플래너에 의해 후 처리를 거칠 것입니다 완전히 실행할 수있게하십시오.

ingetforeignplan, 일반적으로 전달 된 대상 목록은 메이저 토토 사이트 노드에 복사 할 수 있습니다. 그만큼 전달 된 scan_clauses 목록에는와 동일한 조항이 포함되어 있습니다.Baserel- Baserestrictinfo더 나은 실행 효율성을 위해 다시 주문했습니다. 간단한 경우 FDW는 그냥 스트립 할 수 있습니다thegrictinfo노드 scan_clauses 목록에서 (사용Extrac_Actual_Clauses) 모든 조항을 넣습니다 Plan Node의 Qual 목록에 실행 시간에 집행자가 확인합니다. 더 복잡한 FDW 내부적으로 일부 조항을 확인할 수 있습니다. 사례 이러한 조항은 계획 노드의 Qual List에서 제거 할 수 있습니다. 실행자가 그들을 다시 생각하는 데 시간을 낭비하지 않도록합니다.

예를 들어, FDW는 일부 제한 조항을 식별 할 수 있습니다. 양식의외국_variable = sub_expression는 결정할 수 있습니다 로컬로 평가 된 값이 주어지면 원격 서버에서 실행됩니다 의sub_expression. 실제 그러한 조항의 식별은 동안 발생해야합니다.getforeignpaths비용에 영향을 미치기 때문입니다 경로에 대한 추정. 경로FDW_PRIVATE필드는 아마도 a를 포함 할 것입니다 식별 된 절에 대한 포인터thegrictinfo노드. 그 다음에getforeignplan해당 조항을 제거합니다 scan_clauses이지만 추가sub_expressiontofdw_exprs마사지를 받으려면 실행 가능한 양식. 아마도 통제 정보를 넣을 수도 있습니다 계획 노드에FDW_PRIVATE실행 기능에 실행 시간에해야 할 일을 알리는 필드. 그만큼 원격 서버로 전송 된 쿼리에는 무언가가 포함됩니다 좋다여기서외국_variable= $ 1평가에서 실행 시간에 얻은 매개 변수 값FDW_EXPRS발현 트리.

FDW는 항상 적어도 하나의 경로를 구성해야합니다. 테이블의 제한 조항에만. 조인 쿼리에서 가입에 의존하는 경로를 구성하도록 선택할 수도 있습니다. 조항, 예를 들어외국_variable = local_variable. 그러한 조항은 할 것입니다 에서 찾을 수 없습니다Baserel- Baserestrictinfo하지만 찾아야합니다 관계의 가입 목록. 그러한 조항을 사용하는 경로를 A라고합니다."매개 변수 경로". 식별해야합니다 선택된 조인 조항에 사용 된 다른 관계는 적절한 값param_info; 사용get_baserel_parampathinfoto 그 값을 계산하십시오. 안에getforeignplan, Thelocal_variable조인 절 부분 에 추가됩니다.FDW_EXPRS및 그런 다음 런타임에 케이스는 평범한 것과 동일하게 작동합니다. 제한 조항.