이 장은 핵심 사이의 인터페이스를 설명합니다PostgreSQL시스템 및테이블 스포츠 토토 사이트 방법, 테이블 스토리지를 관리합니다. 핵심 시스템은 여기에 지정된 것 이상의 이러한 액세스 방법에 대해 거의 알지 못하므로 애드온 코드를 작성하여 완전히 새로운 액세스 방법 유형을 개발할 수 있습니다.
각 테이블 스포츠 토토 사이트 방법은의 행으로 설명됩니다.PG_AM
시스템 카탈로그. 그만큼PG_AM
항목 이름과 A를 지정합니다핸들러 기능테이블 스포츠 토토 사이트 방법의 경우. 이 항목은를 사용하여 생성 및 삭제할 수 있습니다.스포츠 토토 사이트 방법 만들기and삭제 스포츠 토토 사이트 방법SQL 명령.
테이블 스포츠 토토 사이트 방법 핸들러 함수는 유형의 단일 인수를 받아들이도록 선언해야합니다내부
그리고 의사 유형을 반환하려면table_am_handler
. 인수는 단순히 핸들러 기능이 SQL 명령에서 직접 호출되는 것을 방지하는 데 도움이되는 더미 값입니다.
확장자 SQL 스크립트 파일이 테이블 액세스 메소드 핸들러를 생성 할 수있는 방법은 다음과 같습니다.
함수 생성 또는 교체 my_tableam_handler (내부) 'my_extension', 'my_tableam_handler'로 table_am_handler를 반환합니다. 언어 C 엄격한; 액세스 방법 생성 Myam 유형 테이블 핸들러 my_tableam_handler;
함수의 결과는 유형의 구조에 대한 포인터 여야합니다tableAmroutine
10119_10319정적 const
글로벌 범위의 변수.
테이블 스포츠 토토 사이트 방법 핸들러가있는 소스 파일이 다음과 같은 방법은 다음과 같습니다.
#include "postgres.h" #include "access/tableam.h" #include "fmgr.h" PG_MODULE_MAGIC; 정적 const tableamroutine my_tableam_methods = .type = t_tableAmroutine, /* TableAmroutine의 방법을 예에서 생략 한 방법은 여기에 추가하십시오. */ ; pg_function_info_v1 (my_tableam_handler); 자료 my_tableam_handler (pg_function_args) pg_return_pointer (& my_tableam_methods);
theTableAmroutine
struct, Access Method 's라고도합니다api struct, 콜백을 사용하여 스포츠 토토 사이트 방법의 동작을 정의합니다. 이 콜백은 일반 C 기능으로의 포인터이며 SQL 레벨에서는 보이거나 호출 할 수 없습니다. 모든 콜백과 동작은에 정의됩니다.TableAmroutine
구조 (콜백 요구 사항을 정의하는 구조물 내부의 주석 포함). 대부분의 콜백에는 래퍼 함수가 있으며 테이블 스포츠 토토 사이트 방법의 구현자가 아닌 사용자의 관점에서 문서화됩니다. 자세한 내용은를 참조하십시오.src/include/access/tableam.h
파일.
스포츠 토토 사이트 방법을 구현하려면 구현자는 일반적으로 구현해야합니다am-특이 적 유형의 튜플 테이블 슬롯 (참조src/include/executor/tuptable.h
)는 스포츠 토토 사이트 방법 외부의 코드가 AM의 튜플에 대한 참조를 고정하고 튜플의 열에 스포츠 토토 사이트 할 수 있도록 허용합니다.
현재 AM이 실제로 데이터를 저장하는 방식은 상당히 제한되지 않습니다. 예를 들어 Postgres의 공유 버퍼 캐시를 사용하는 것이 가능하지만 필요하지는 않습니다. 사용되는 경우 사용하는 것이 합리적 일 것입니다PostgreSQL의 표준 페이지 레이아웃에 설명 된대로PostgreSQL : 문서 : 개발 : 66.6. 데이터베이스 토토 결과 레이아웃.
테이블 스포츠 토토 사이트 방법 API의 상당히 큰 제약 조건 API는 현재 AM이 수정 및/또는 인덱스를 지원하려면 각 튜플이 튜플 식별자 (를 가질 필요가 있다는 것입니다.TID) 블록 번호와 항목 번호로 구성된 (참조PostgreSQL : 문서 : 개발 : 66.6. 데이터베이스 토토 결과 레이아웃). 의 하위 부분이 엄격히 필요하지 않습니다.tids예를 들어와 같은 의미를 갖습니다.힙
, 그러나 비트 맵 스캔 지원이 필요한 경우 (선택 사항) 블록 번호는 로컬을 제공해야합니다.
충돌 안전의 경우 AM은 Postgres '를 사용할 수 있습니다.Wal또는 사용자 정의 구현. 만약에Wal선택되었습니다.제네릭 월 레코드사용 가능 또는 APostgreSQL : 문서 : 개발 : 64.2구현 될 수 있습니다.
단일 트랜잭션 내에서 다른 테이블 스포츠 토토 사이트 방법에 액세스 할 수있는 방식으로 트랜잭션 지원을 구현하려면 기계와 밀접하게 통합해야 할 것입니다.src/backend/access/transam/xlog.c
.
새로운 개발자테이블 스포츠 토토 사이트 방법
기존을 참조 할 수 있습니다힙
insivendation insrc/backend/access/heap/heapam_handler.c
구현에 대한 자세한 내용.