이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : F.36. Postgres_FDW - 외부 PostgreSQL 범퍼카 토토 저장된 액세스 데이터버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.31. postgres_fdw

thepostgres_fdw모듈 제공 외국 데이터 포장지postgres_fdw외부에 저장된 데이터에 액세스하는 데 사용할 수 있습니다PostgreSQL서버.

이 모듈에서 제공하는 기능은 실질적으로 겹칩니다 이전의 기능으로dblink모듈. 하지만postgres_fdw보다 투명하고 롤 토토 테이블에 액세스하기위한 표준 호환 구문 많은 경우 더 나은 성능을 제공하십시오.

사용을 사용하여 롤 토토 액세스를 준비하려면Postgres_FDW:

  1. 설치Postgres_FDW확장 사용PostgreSQL : 문서 : 9.3 : 토토 생성.

  2. 사용을 사용하여 외국 서버 개체 생성서버 생성, 각 리모컨을 나타냅니다 연결하려는 데이터베이스. 연결 정보를 지정하고 제외하고user비밀번호, 서버 객체의 옵션으로

  3. 사용 사용자 매핑 생성사용자 매핑 만들기, 각각 데이터베이스 사용자 각 외국 서버에 액세스 할 수 있습니다. as as 원격 사용자 이름과 비밀번호를 지정하십시오.사용자and비밀번호옵션 사용자 매핑의.

  4. 사용 외국 테이블 만들기외국 테이블 만들기, 각각 액세스하려는 롤 토토 테이블. 외국 테이블의 열 참조 된 롤 토토 테이블과 일치해야합니다. 그러나 테이블을 사용할 수 있습니다 및/또는 롤 토토 테이블과 다른 열 이름, 외국 테이블의 옵션으로 올바른 롤 토토 이름을 지정합니다. 물체.

이제 필요select외국에서 테이블은 기본 롤 토토 테이블에 저장된 데이터에 액세스합니다. 너 를 사용하여 롤 토토 테이블을 수정할 수도 있습니다.삽입, 업데이트또는삭제. (물론 원격 사용자입니다 사용자 매핑에 지정된 권한이 있어야합니다. 이런 것들.)

일반적으로 외국 테이블의 열을 권장합니다. 정확히 동일한 데이터 유형 및 Collations로 선언됩니다. 롤 토토 테이블의 참조 열로 적용 가능합니다. 하지만postgres_fdw현재 다소 다소 있습니다 필요에 따라 데이터 유형 변환 수행에 대한 용서, 유형이나 콜라주가 할 때 놀라운 의미 론적 이상이 발생할 수 있습니다. 롤 토토 서버 해석으로 인해 일치하지 않음여기서조항은 로컬과 약간 다르게 섬기는 사람.

외부 테이블은 더 적은 열로 선언 될 수 있습니다. 기본 롤 토토 테이블과는 다른 열 순서가 있습니다. 가지다. 롤 토토 테이블에 열을 일치시키는 것은 이름으로, 위치.

F.31.1. FDW postgres_fdw의 옵션

F.31.1.1. 연결 옵션

postgres_fdw외국 데이터 래퍼가 동일하게 가질 수 있습니다 옵션libpq연결 문자열,섹션 31.1.2를 제외하고 이 옵션은 허용되지 않습니다 :

  • 사용자and비밀번호(사용자 매핑에 이들을 지정, 대신에)

  • client_encoding(이것은 자동으로입니다 로컬 서버 인코딩에서 설정)

  • fallback_application_name(항상 설정 에게postgres_fdw)

슈퍼 사용자 만 비밀번호없이 외래 서버에 연결할 수 있습니다 인증이므로 항상를 지정합니다.비밀번호사용자 매핑에 대한 옵션 비 upperusers.

F.31.1.2. 객체 이름 옵션

이 옵션은 SQL에 사용 된 이름을 제어하는 데 사용할 수 있습니다. 롤 토토으로 전송 된 진술PostgreSQL서버. 이러한 옵션이 필요합니다 외국 테이블이 이름과 다른 이름으로 생성 될 때 원격 테이블의 기본 이름.

Schema_Name

이 옵션은 외국 테이블에 지정할 수 있습니다. 롤 토토 서버의 외국 테이블에 사용할 스키마 이름. 이 옵션이 생략되면 외국 테이블 스키마의 이름이 사용됩니다.

table_name

외국 테이블에 지정할 수있는이 옵션은 롤 토토 서버의 외국 테이블에 사용할 테이블 이름. 이 옵션이 생략되면 외국 테이블 이름이 사용됩니다.

column_name

이 옵션은 외국 열에 대해 지정할 수 있습니다. 테이블, 롤 토토의 열에 사용할 열 이름을 제공합니다. 섬기는 사람. 이 옵션이 생략되면 열 이름이 사용됩니다.

F.31.1.3. 비용 추정 옵션

Postgres_FDW원격 데이터를 검색합니다 원격 서버에 대한 쿼리를 실행하므로 이상적으로 추정됩니다 외국 테이블을 스캔하는 데 드는 비용은 원격 서버와 통신을위한 오버 헤드에서 수행됩니다. 그러한 견적을 얻는 가장 신뢰할 수있는 방법은 원격을 요청하는 것입니다. 서버를 한 다음 오버 헤드를 위해 무언가를 추가하지만 간단하게 쿼리, 추가 원격 쿼리 비용의 가치가 없을 수도 있습니다. 비용 추정치를 얻으려면. 그래서postgres_fdw비용 추정의 방법을 제어하기위한 다음 옵션을 제공합니다. 완료:

use_remote_estimate

이 옵션은 외국 테이블 또는 A에 지정할 수 있습니다. 외국 서버, 제어Postgres_FDW롤 토토 문제설명비용 추정을 얻기위한 명령. 설정 외국 테이블의 경우 서버의 설정을 무시하지만 그 테이블을 위해. 기본값은거짓.

FDW_STARTUP_COST

외국 서버에 지정할 수있는이 옵션은 예상 시작 비용에 추가되는 숫자 값 해당 서버의 외국 테이블 스캔. 이것은 추가를 나타냅니다 연결 설정, 구문 분석 및 계획의 오버 헤드 롤 토토 쪽의 쿼리 등. 기본값은입니다.100.

fdw_tuple_cost

외국 서버에 지정할 수있는이 옵션은 튜플 당 추가 비용으로 사용되는 숫자 값 해당 서버에서 외국 테이블 스캔. 이것은 추가를 나타냅니다 서버 간의 데이터 전송 오버 헤드. 당신은 또는 증가 할 수 있습니다 더 높거나 낮은 네트워크 지연을 반영하도록이 숫자를 줄입니다. 원격 서버. 기본값은입니다.0.01.

언제use_remote_estimate진실,postgres_fdw행 카운트와 비용을 얻습니다 원격 서버에서 추정 한 다음 추가FDW_STARTUP_COSTandfdw_tuple_cost비용 추정치. 언제use_remote_estimate거짓,Postgres_FDW로컬 행 카운트 및 비용을 수행합니다 추정 및 추가fdw_startup_costandfdw_tuple_cost비용 추정치. 이 지역 추정은 로컬이 아니라면 매우 정확하지는 않을 것입니다. 롤 토토 테이블 통계의 사본을 사용할 수 있습니다. 달리기PostgreSQL : 문서 : 9.3 : 토토 커뮤니티외국 테이블에서 로컬 통계를 업데이트하는 방법; 이것은 스캔을 수행합니다 원격 테이블을 다음 마치 마치 마치 마치 통계를 계산하고 저장합니다. 테이블은 로컬이었다. 로컬 통계를 유지하는 것이 유용한 방법이 될 수 있습니다 원격 테이블의 쿼리 계획 간접비를 줄이기 위해 원격 테이블이 자주 업데이트되고 로컬 통계는 곧 쓸모가 없어.

F.31.1.4. 업데이트 가능성 옵션

기본적으로 모든 외국 테이블을 사용하여Postgres_FDW는 업데이트 가능한 것으로 가정합니다. 이것은 5 월입니다 다음 옵션을 사용하여 재정의하십시오.

업데이트 가능

이 옵션은를 제어합니다.Postgres_FDW외래 테이블을 수정할 수 있습니다 사용삽입, 업데이트and삭제명령. 외국 테이블 또는 외국 서버에 대해 지정할 수 있습니다. 에이 테이블 레벨 옵션은 서버 레벨 옵션을 대체합니다. 기본값은true.

물론 원격 테이블이 실제로 업데이트되지 않은 경우 어쨌든 오류가 발생합니다. 이 옵션을 사용하면 주로 허용됩니다 원격 서버를 쿼리하지 않고 로컬로 던지는 오류입니다. 메모 그러나Information_Schema보기 보고합니다Postgres_FDW외국 테이블 이 옵션의 설정에 따라 업데이트 가능 (또는 그렇지 않음). 원격 서버를 확인하지 않고.

F.31.2. 연결 관리

Postgres_FDW연결을 설정합니다 외국을 사용하는 첫 번째 쿼리 중에 외국 서버에 외국 서버와 관련된 테이블. 이 연결은 유지됩니다 같은 세션에서 후속 쿼리에 대해 재사용했습니다. 그러나 if 여러 사용자 ID (사용자 매핑)가 액세스하는 데 사용됩니다. 외국 서버, 각 사용자마다 연결이 설정됩니다 매핑.

F.31.3. 거래 관리

외국에서 롤 토토 테이블을 참조하는 쿼리 중에 섬기는 사람,postgres_fdw거래를 시작합니다 원격 서버에서 아직 해당 해당 열이 열리지 않은 경우 현재 지역 거래. 원격 거래가 커밋되었습니다 또는 지역 거래가 저지하거나 중단 할 때 중단됩니다. 저장 포인트 해당 리모컨을 생성하여 유사하게 관리됩니다 SavePoints.

롤 토토 트랜잭션이 사용SERIALIZALE로컬시 분리 레벨 거래는SERIALIZABLE격리 수준; 그렇지 않으면 사용반복 가능한 읽기분리 레벨. 이 선택은 쿼리가 수행되는 경우를 보장합니다 원격 서버에서 여러 테이블 스캔하면 모든 스캔에 대한 스냅 샷과 일치합니다. 결과는입니다 단일 트랜잭션 내에서의 연속 쿼리는 동시 업데이트가 있더라도 원격 서버의 동일한 데이터 다른 활동으로 인해 원격 서버에서 발생합니다. 저것 지역 거래가 사용하는 경우 어쨌든 행동이 예상됩니다SERIALIZALE또는반복 가능한 읽기격리 수준이지만 A에 대한 놀라운Committed로컬 거래. 미래PostgreSQL릴리스이 규칙을 수정할 수 있습니다.

F.31.4. 롤 토토 쿼리 최적화

postgres_fdw최적화 시도 전송 된 데이터 양을 줄이기위한 원격 쿼리 외국 서버. 이것은 query를 보내어 수행됩니다여기서실행을 위해 롤 토토 서버로의 조항, 그리고 필요하지 않은 테이블 열을 검색하지 않음 현재 쿼리. 쿼리의 미성 침체의 위험을 줄이기 위해여기서클로스는 리모컨으로 전송되지 않습니다 내장 데이터 유형, 운영자 및 기능. 조항의 운영자 및 기능은이어야합니다.불변

실제로 롤 토토 서버로 전송되는 쿼리 실행은를 사용하여 검사 할 수 있습니다.설명 말 수가 많은.

F.31.5. 롤 토토 쿼리 실행 환경

롤 토토 세션에서Postgres_FDW, Thesearch_path매개 변수가 정당하게 설정되었습니다PG_CATALOG, SO 내장 객체 만 스키마없이 볼 수 있습니다 자격. 이것은에 의해 생성 된 쿼리에 대한 문제가 아닙니다.postgres_fdw항상 그러한 자격을 공급합니다. 그러나 이것은 위험을 초래할 수 있습니다 트리거를 통해 원격 서버에서 실행되는 기능 원격 테이블에 대한 규칙. 예를 들어, 원격 테이블이 실제로 인 경우 보기, 해당보기에 사용 된 기능은 다음과 같이 실행됩니다. 제한된 검색 경로. 스키마 자격을 모두 권장합니다 그러한 기능의 이름 또는 첨부세트 search_path옵션 (참조함수 만들기) 그러한 기능에 예상 검색 경로 환경을 설정하십시오.

Postgres_FDW마찬가지로 매개 변수에 대한 롤 토토 세션 설정TimeZone, Datestyle, IntervalStyle, 그리고extra_float_digits. 이것들은보다 문제가 적을 가능성이 적습니다search_path하지만 기능으로 처리 할 수 있습니다SET필요가 발생하는 경우 옵션.

그것은not추천 세션 수준을 변경 하여이 동작을 무시합니다 이 매개 변수의 설정; 그것은 원인 일 가능성이 높습니다postgres_fdw오작동에.

F.31.6. 교차 버전 호환성

Postgres_FDW리모컨과 함께 사용할 수 있습니다 다시 데이트 서버PostgreSQL8.3. 읽기 전용 기능은 8.1로 다시 사용할 수 있습니다. 제한 그러나 그게postgres_fdw일반적으로 불변의 내장 기능과 운영자가 안전하다고 가정합니다. 실행을 위해 원격 서버로 전송하십시오.여기서외국 표에 대한 조항. 따라서, a 롤 토토 서버 릴리스 이후 추가 된 내장 기능 실행을 위해 전송 될 수 있습니다."함수는 존재하지 않습니다"또는 유사한 오류. 이것 실패 유형은 쿼리를 다시 작성하여 해결할 수 있습니다. 외부 테이블 참조를 a 보결-selectwith오프셋 0최적화 울타리로서 문제를 제기합니다 하위 외부의 기능 또는 연산자select.