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

52.4. 외국 데이터 포장 쿼리 스포츠 토토 사이트

FDW 콜백 함수getforeignRelsize, getforeignpaths, getforeignplanplanforeignModify의 작업에 적합해야합니다 그만큼스포츠 토토 사이트플래너. 여기에 있습니다 그들이해야 할 일에 대한 몇 가지 메모.

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

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

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

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

getforeignplan를 검사 할 수 있습니다fdw_private선택한 필드외국 경로노드 및 생성fdw_exprsandfdw_private에 배치 할 목록Foreignscan계획 노드가있을 예정입니다 실행 시간에 사용할 수 있습니다. 이 두 목록은 모두 있어야합니다 형식으로 표현CopyObject복사 방법을 알고 있습니다. 그만큼fdw_private목록은 다른 제한 사항이 없으며 핵심에 의해 해석되지 않습니다. 어떤 식 으로든 백엔드. 그만큼FDW_EXPRS목록은 nil이 아닌 경우 표현 나무를 포함 할 것으로 예상됩니다. 런타임에 실행되기위한 것입니다. 이 나무들은 겪게됩니다 플래너가 완전히 실행 가능하게 만들기위한 사후 처리.

ingetforeignplan, 일반적으로 전달 된 대상 목록은 계획 노드에 복사 할 수 있습니다. 그만큼 전달 된 scan_clauses 목록에는와 동일한 조항이 포함되어 있습니다.Baserel- Baserestrictinfo이지만 다시 주문할 수 있습니다 더 나은 실행 효율성을 위해. 간단한 경우 FDW는 단지 가능합니다 조각thegrictinfoscan_clauses 목록 (사용Extract_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_parampathinfo계산 그 가치. 안에getforeignplan, Thelocal_variable조인 부분 조항이 추가됩니다fdw_exprs, 그리고 런타임에 케이스는 평범한 것과 동일하게 작동합니다. 제한 조항.

스포츠 토토 사이트 할 때업데이트또는삭제, PlanforeignModify|repoptinfo외국 테이블의 구조를 구조화하고 만듭니다 사용Baserel- fdw_private데이터 이전에 스캔 계획 기능에 의해 생성되었습니다. 그러나에서삽입대상 테이블이 스캔되지 않았습니다 없음repoptinfo그것을 위해. 그만큼List반품PlanforeignModify와 동일한 제한 사항이 있습니다 그만큼FDW_PRIVATEA 목록Outissscan스포츠 토토 사이트 노드, 즉 포함해야합니다 그 구조 만CopyObject알고 있습니다 복사하는 방법.

업데이트또는삭제지원하는 외부 데이터 소스에 대한 동시 업데이트, 권장됩니다.Foreignscan작동하는 행을 잠금합니다. 아마도를 통해선택을 선택하십시오 업데이트. FDW는 페치 타임에 행을 잠그기로 선택할 수도 있습니다. 외국 테이블이 a에 참조 될 때업데이트/공유 선택; 그렇지 않다면업데이트또는공유하다옵션은 본질적으로 외국인이라면 NO-OP입니다. 테이블이 걱정됩니다. 이 행동은 의미론을 약간 생성 할 수 있습니다 로우 잠금이있는 로컬 테이블의 작업과 다릅니다. 가능한 한 오랫동안 지연됨 : 원격 행이 잠겨있을 수 있습니다. 비록 그들이 이후로 지역적으로 적용된 제한을 실패하더라도 조건에 가입하십시오. 그러나 현지 의미와 정확히 일치합니다 모든 행에 대한 추가 원격 액세스가 필요하며 어쨌든 잠금 시맨틱에 따라 불가능합니다 외부 데이터 소스가 제공합니다.