| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 토토 사이트 순위 : 문서 : 9.3 : 외국 데이터 래퍼 도우미 기능 | PostgreSQL : 문서 : 9.3 : 외국 데이터 래퍼 토토 핫 | 52장. 쓰기 외부 데이터 래퍼 | PostgreSQL : 문서 : 9.3 : 유전자 사설 토토 사이트 옵티마이저 | |
FDW 콜백 함수GetForeignRelSize, GetForeignPaths, GetForeignPlan그리고PlanForeign수정다음 작업에 적합해야 합니다.포스트그레SQL플래너. 여기 있습니다
해야 할 일에 대한 몇 가지 참고 사항입니다.
정보루트그리고바셀다음의 양을 줄이는 데 사용할 수 있습니다. 외부 테이블에서 가져와야 하는 정보(그리고 따라서 비용이 절감됩니다.)baserel-baserestrictinfo특히 제한 한정어()가 포함되어 있어 흥미롭습니다.어디절)을 필터링하는 데 사용해야 합니다. 가져올 행. (FDW 자체는 강제할 필요가 없습니다. 핵심 실행자가 대신 이를 확인할 수 있기 때문에 이러한 특성이 있습니다.)baserel-reltargetlist다음에 사용할 수 있습니다. 어떤 열을 가져와야 하는지 결정합니다. 하지만 그것뿐이라는 점에 유의하세요 에서 내보내야 하는 열을 나열합니다.ForeignScan스포츠 토토 사이트 노드, 사용되는 열 아님 품질 평가에는 있지만 쿼리에 의해 출력되지는 않습니다.
FDW 계획에 다양한 비공개 필드를 사용할 수 있습니다. 정보를 보관하는 기능입니다. 일반적으로 저장하는 모든 것은 FDW 비공개 필드는 회수되도록 palloc되어야 합니다. 계획이 끝났습니다.
baserel-fdw_private은무효FDW 계획에 사용할 수 있는 포인터
특정 외국과 관련된 정보를 저장하는 기능
테이블. 코어 플래너는 초기화하는 것 외에는 건드리지 않습니다.
다음과 같은 경우 NULL로 설정합니다.바셀노드가 생성되었습니다.
다음에서 정보를 전달하는 데 유용합니다.GetForeignRelSize에GetForeignPaths및/또는GetForeignPaths에GetForeignPlan, 이를 통해 회피
재계산.
GetForeignPaths식별할 수 있습니다
개인정보를 저장하여 다양한 접근 경로를 의미fdw_private필드ForeignPath노드.fdw_private다음으로 선언되었습니다.목록포인터이지만 실제로는 그 이후로 무엇이든 포함할 수 있습니다.
코어 플래너는 그것을 건드리지 않습니다. 그러나 가장 좋은 방법은
다음으로 덤프 가능한 표현을 사용하세요.nodeToString, 디버깅 지원에 사용
백엔드에서 사용할 수 있습니다.
GetForeignPlan검토할 수 있습니다fdw_private선택된 필드ForeignPath노드, 생성 가능fdw_exprs그리고fdw_private에 배치될 목록ForeignScan노드 계획, 어디에 있을 것인가
실행시 사용 가능합니다. 이 두 목록은 모두 다음과 같아야 합니다.
다음과 같은 형태로 표현됩니다.copyObject복사하는 방법을 알고 있습니다.fdw_private목록에는 다른 제한이 없으며 핵심에 의해 해석되지 않습니다.
어떤 식으로든 백엔드를 사용하세요.fdw_exprsNIL이 아닌 경우 목록에는 다음과 같은 표현식 트리가 포함될 것으로 예상됩니다.
런타임에 실행되도록 의도되었습니다. 이 나무들은 겪을 것이다
완전히 실행 가능하도록 플래너가 사후 처리합니다.
에GetForeignPlan, 일반적으로
전달된 대상 목록은 그대로 계획 노드에 복사될 수 있습니다. 는
전달된 scan_clauses 목록에는 다음과 동일한 절이 포함되어 있습니다.baserel-baserestrictinfo, 하지만 다시 주문할 수 있음
더 나은 실행 효율성을 위해. 간단한 경우에는 FDW가 다음을 수행할 수 있습니다.
스트립RestrictInfo노드
scan_clauses 목록(사용extract_actual_clauses) 그리고 모든 절을 넣습니다.
계획 노드의 품질 목록에 포함됩니다. 이는 모든 조항이
런타임에 실행자가 확인합니다. 더 복잡한 FDW는
내부적으로 일부 조항을 확인할 수 있으며, 이 경우
해당 조항은 계획 노드의 자격 목록에서 제거될 수 있습니다.
집행자는 이를 다시 확인하는 데 시간을 낭비하지 않습니다.
예를 들어, FDW는 일부 제한 조항을 식별할 수 있습니다.
형식의외국_변수
= 하위 표현, 이는 다음과 같이 결정됩니다.
로컬에서 평가된 값을 바탕으로 원격 서버에서 실행됩니다.하위 표현. 실제
그러한 조항의 식별은GetForeignPaths, 비용에 영향을 미치기 때문입니다.
경로에 대한 추정. 경로는fdw_private필드에는 아마도
식별된 절에 대한 포인터RestrictInfo노드. 그런 다음GetForeignPlan다음에서 해당 조항을 제거하겠습니다.
scan_clauses, 그러나 다음을 추가하세요.하위 표현에fdw_exprs그것이 마사지되도록 하기 위해
실행 가능한 형태. 아마도 제어 정보도 넣을 것입니다.
계획 노드에fdw_private필드
실행 함수에게 런타임에 수행할 작업을 알려줍니다. 쿼리
원격 서버로 전송되는 데에는 다음과 같은 내용이 포함됩니다.어디외국_변수 = $1,
런타임 시에 평가를 통해 얻은 매개변수 값fdw_exprs표현 트리.
FDW는 항상 종속된 경로를 하나 이상 구성해야 합니다.
테이블의 제한 조항에만 해당됩니다. 조인 쿼리에서는 다음과 같은 일이 발생할 수 있습니다.
또한 조인 절에 의존하는 경로를 구성하도록 선택합니다.
예외국_변수 = local_variable.
그러한 조항은 다음에서 찾을 수 없습니다.baserel-baserestrictinfo그러나 다음에서 찾아야 합니다.
관계의 조인 목록. 이러한 절을 사용하는 경로를 a라고 합니다."매개변수화된 경로". 식별해야 합니다.
선택한 조인 절에 사용된 다른 관계
적절한 값param_info; 사용get_baserel_parampathinfo계산하다
그 가치. 에서GetForeignPlan, 그local_variable조인 부분
조항이 추가됩니다.fdw_exprs,
그런 다음 런타임에 케이스는 일반 케이스와 동일하게 작동합니다.
제한 조항.
스포츠 토토 사이트할 때업데이트또는삭제, PlanForeign수정다음을 조회할 수 있습니다RelOptInfo외부 테이블에 대한 구조체 및 만들기
의 사용baserel-fdw_private데이터
이전에 스캔 계획 기능에 의해 생성되었습니다. 그러나삽입대상 테이블이 스캔되지 않으므로
없어요RelOptInfo그렇습니다.목록반환자PlanForeign수정다음과 동일한 제한사항이 있습니다.fdw_privatea의 목록ForeignScan계획 노드, 즉 다음을 포함해야 합니다.
다음과 같은 구조만copyObject알고 있어요
복사하는 방법.
다음을 위해업데이트또는삭제다음을 지원하는 외부 데이터 소스에 대해 동시 업데이트를 수행하는 것이 좋습니다.ForeignScan작업은 가져오는 행을 잠그고, 아마도 다음과 같은 것을 통해선택 대상 업데이트. FDW는 페치 시 행을 잠그도록 선택할 수도 있습니다. 외부 테이블이 a에서 참조되는 경우업데이트/공유 선택; 그렇지 않은 경우에는업데이트용또는에 대한 공유옵션은 기본적으로 외부 옵션이 작동하지 않는 한 작동하지 않습니다. 테이블이 걱정됩니다. 이 동작은 의미 체계를 약간 생성할 수 있습니다. 행 잠금이 있는 로컬 테이블에 대한 작업과 다릅니다. 관례적으로 가능한 한 오랫동안 지연됨: 원격 행이 잠길 수 있음 나중에 지역적으로 적용된 제한에 실패하더라도 가입 조건. 그러나 지역 의미를 정확히 일치시키는 것은 모든 행에 대해 추가 원격 액세스가 필요하며 어쨌든 어떤 잠금 의미론에 따라 불가능할 수 있습니다. 외부 데이터 소스가 제공합니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | PostgreSQL : 문서 : 9.3 : 유전자 사설 토토 사이트 옵티마이저 |
| 외부 데이터 래퍼 도우미 기능 | 위로 | 유전자 쿼리 최적화 |