스포츠 토토 사이트 9.3.25 문서 | ||||
---|---|---|---|---|
토토 사이트 순위 : 문서 : 9.3 : 외국 데이터 래퍼 도우미 기능 | PostgreSQL : 문서 : 9.3 : 외국 데이터 래퍼 토토 핫 | 52 장. 글쓰기 외국 데이터 포장지 | PostgreSQL : 문서 : 9.3 : 유전자 사설 토토 사이트 옵티마이저 |
FDW 콜백 함수getforeignRelsize
, getforeignpaths
, getforeignplan
및planforeignModify
의 작업에 적합해야합니다
그만큼스포츠 토토 사이트플래너. 여기에 있습니다
그들이해야 할 일에 대한 몇 가지 메모.
정보루트andBaserel의 양을 줄이는 데 사용될 수 있습니다 외국 테이블에서 가져와야하는 정보 (및 따라서 비용을 줄입니다).Baserel- Baserestrictinfo특히입니다 흥미롭게, 제한이 포함되어 있기 때문에 (여기서Clauses)를 필터링하는 데 사용해야합니다 가져 오는 행. (FDW 자체는 시행 할 필요가 없습니다 핵심 집행자가 대신 확인할 수 있듯이이 quals.)Baserel- reltargetList익숙해 질 수 있습니다 어떤 열을 가져와야하는지 결정하십시오. 그러나 그것은 단지 그것만 주목하십시오 에 의해 방출되어야하는 열을 나열합니다.Foreignscan사용되는 열이 아닌 노드를 스포츠 토토 사이트하십시오 자격 평가에서는 쿼리에 의해 출력되지 않습니다.
FDW 계획에는 다양한 개인 필드를 사용할 수 있습니다 정보를 유지하는 기능. 일반적으로, 당신이 저장하는 모든 것 FDW 개인 필드는 palloc'd이어야하므로 재생되도록해야합니다. 계획이 끝날 때.
Baserel- fdw_privateisvoidFDW 계획에 사용할 수있는 포인터
특정 외국과 관련된 정보를 저장하는 기능
테이블. 핵심 플래너는 초기화를 제외하고는 접촉하지 않습니다.Baserel노드가 생성되었습니다.
정보를 전달하는 데 유용합니다getforeignRelsize
togetforeignpaths
및/또는getforeignpaths
togetforeignplan
재 계산.
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입니다. 테이블이 걱정됩니다. 이 행동은 의미론을 약간 생성 할 수 있습니다 로우 잠금이있는 로컬 테이블의 작업과 다릅니다. 가능한 한 오랫동안 지연됨 : 원격 행이 잠겨있을 수 있습니다. 비록 그들이 이후로 지역적으로 적용된 제한을 실패하더라도 조건에 가입하십시오. 그러나 현지 의미와 정확히 일치합니다 모든 행에 대한 추가 원격 액세스가 필요하며 어쨌든 잠금 시맨틱에 따라 불가능합니다 외부 데이터 소스가 제공합니다.
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | PostgreSQL : 문서 : 9.3 : 유전자 사설 토토 사이트 옵티마이저 |
외국 데이터 포장지 도우미 기능 | up | 유전자 쿼리 Optimizer |