PostgreSQL의 구현테이블 샘플
조항은 사용자 정의 테이블 샘플링 방법을 지원하고Bernoulli
및시스템
SQL 표준에 필요한 방법. 젠 토토 방법은 테이블의 어떤 행을 선택할 때를 선택합니다.테이블 샘플
조항이 사용됩니다.
SQL 레벨에서 테이블 샘플링 방법은 단일 SQL 기능으로 표시되며, 일반적으로 C로 구현되어 서명
method_name (내부)을 반환합니다. tsm_handler
함수의 이름은 동일한 메소드 이름입니다.테이블 샘플
절. 그만큼내부
인수는 단순히이 함수가 SQL 명령에서 직접 호출되는 것을 방지하는 데 도움이되는 더미 (항상 값 0이 있음)입니다. 함수의 결과는 palloc'd 유형의 구조 여야합니다tsmroutine
, 여기에는 샘플링 방법의 기능을 지원하는 포인터가 포함되어 있습니다. 이러한 지원 기능은 일반 C 기능이며 SQL 레벨에서는 보이거나 호출 할 수 없습니다. 지원 기능은에 설명되어 있습니다.PostgreSQL : 문서 : 10 : 57.1. 젠 토토 방법 지원 기능.
함수 포인터 외에도TSMROUTINE
구조는 이러한 추가 필드를 제공해야합니다 :
List *ParameterTypes
이것은 |테이블 샘플
이 젠 토토 방법이 사용될 때의 절. 예를 들어, 내장 방법의 경우이 목록은 값이있는 단일 항목을 포함합니다float4oid
, 젠 토토 백분율을 나타냅니다. 사용자 정의 젠 토토 메소드는 더 많은 또는 다른 매개 변수를 가질 수 있습니다.
bool reportable_across_queries
iftrue
, 젠 토토 방법은 동일한 매개 변수와의 연속 쿼리에서 동일한 샘플을 전달할 수 있습니다.반복 가능한
종자 값은 매번 제공되며 테이블 내용은 변경되지 않았습니다. 이것이 일 때false
, The반복 가능한
절은 젠 토토 방법과 함께 사용하기 위해 허용되지 않습니다.
bool repeatable_across_scans
iftrue
, 젠 토토 방법은 동일한 쿼리에서 연속 스캔에서 동일한 샘플을 전달할 수 있습니다 (변하지 않는 매개 변수, 시드 값 및 스냅 샷을 가정). 이것이 일 때false
, 플래너는 젠 토토 된 테이블을 두 번 이상 스캔 해야하는 요금제를 선택하지 않으므로 일관되지 않은 쿼리 출력이 발생할 수 있으므로.
thetsmroutine
struct 유형은src/include/access/tsmapi.h
, 추가 세부 사항을 참조하십시오.
표준 분포에 포함 된 테이블 샘플링 방법은 자신의 글을 쓰려고 할 때 좋은 참조입니다. 조사SRC/백엔드/액세스/테이블 샘플
내장 젠 토토 방법에 대한 소스 트리의 하위 디렉토리 및Contrib
애드온 방법에 대한 하위 디렉토리.