포스트그레SQL의 구현테이블 샘플절은 외에도 사용자 정의 테이블 샘플링 방법을 지원합니다.BERNOULLI그리고시스템SQL 표준에서 요구하는 메소드입니다. 윈 토토 방법에 따라 테이블의 어떤 행이 선택될지 결정됩니다.테이블 샘플절이 사용되었습니다.
SQL 레벨에서 테이블 샘플링 방법은 일반적으로 C로 구현되며 서명이 있는 단일 SQL 함수로 표시됩니다.
method_name(내부) tsm_handler 반환
함수 이름은 다음에 나타나는 메소드 이름과 동일합니다.테이블 샘플절.내부인수는 단순히 이 함수가 SQL 명령에서 직접 호출되는 것을 방지하는 역할을 하는 더미(항상 0 값을 가짐)입니다. 함수의 결과는 유형의 palloc'd 구조체여야 합니다.Tsm루틴, 샘플링 방법에 대한 기능을 지원하는 포인터가 포함되어 있습니다. 이러한 지원 함수는 일반 C 함수이며 SQL 수준에서 표시되거나 호출할 수 없습니다. 지원 기능은 다음에 설명되어 있습니다.PostgreSQL : 문서 : 17 : 58.1. 와이즈 토토 방법 지원 기능.
함수 포인터 외에도TsmRoutine구조체는 다음 추가 필드를 제공해야 합니다.
목록 *parameterTypes이것은 다음에서 허용할 매개변수의 데이터 유형 OID를 포함하는 OID 목록입니다.표 샘플이 윈 토토 방법을 사용할 때의 절입니다. 예를 들어 내장 메소드의 경우 이 목록에는 값이 있는 단일 항목이 포함됩니다.FLOAT4OID, 윈 토토 비율을 나타냅니다. 맞춤 윈 토토 방법에는 더 많거나 다른 매개변수가 있을 수 있습니다.
bool Repeatable_across_queries만약참, 윈 토토 방법은 동일한 매개변수와반복 가능시드 값은 매번 제공되며 테이블 내용은 변경되지 않았습니다. 이럴 때거짓, 그반복 가능절은 윈 토토 방법과 함께 사용할 수 없습니다.
boolpeatable_across_scans만약참, 윈 토토 방법은 동일한 쿼리의 연속 스캔에서 동일한 샘플을 전달할 수 있습니다(변하지 않는 매개변수, 시드 값 및 스냅샷 가정). 이럴 때거짓, 플래너는 윈 토토된 테이블을 두 번 이상 스캔해야 하는 계획을 선택하지 않습니다. 그렇게 하면 일관되지 않은 쿼리 출력이 발생할 수 있기 때문입니다.
그TsmRoutine구조체 유형이 다음에서 선언되었습니다.src/include/access/tsmapi.h, 자세한 내용은 참조하세요.
표준 분포에 포함된 테이블 샘플링 방법은 직접 작성하려고 할 때 좋은 참고 자료가 됩니다. 다음을 살펴보세요.src/백엔드/액세스/테이블샘플내장 윈 토토 방법을 위한 소스 트리의 하위 디렉토리 및기여애드온 메소드의 하위 디렉토리.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.