인덱스 구성 및 유지 보수 기능은 인덱스입니다 액세스 방법은 다음과 같습니다.
indexbuildresult * Ambuild (관계 쌓기, 관계 색인 상관, indexInfo *indexInfo);
새 인덱스 구축. 색인 관계는 물리적으로 이루어졌습니다
생성되었지만 비어 있습니다. 고정 된 내용으로 채워야합니다
사설 토토 사이트 방법에 필요한 데이터와 모든 튜플에 대한 항목
이미 테이블에 존재합니다. 일반적으로Ambuild
함수가 호출됩니다IndexBuildHeapScan ()
테이블을 스캔하려면
기존 튜플 및 삽입 해야하는 키를 계산합니다.
색인으로. 함수는 palloc'd struct를 반환해야합니다
새로운 지수에 대한 통계 포함.
bool Aminsert (관계 색인 상관, 데이텀 *값, bool *isnull, ItemPointer heap_tid, 관계 중심, bool check_uniqueness);
새 튜플을 기존 인덱스에 삽입하십시오. 그만큼값및isnull배열 인덱싱 할 핵심 값을 제공하고heap_tid인덱스가 지정 될 TID입니다. 액세스 인 경우 메소드는 고유 인덱스를 지원합니다 (ITSPG_AM.amcanunique플래그는 사실입니다) 그런 다음check_uniqueness사실 일 수 있습니다.이 경우 사설 토토 사이트 방법이이를 확인해야합니다. 충돌하는 행은 없습니다. 이것이 유일한 상황입니다 사설 토토 사이트 방법에는 일반적으로가 필요합니다.heprelation매개 변수. 보다섹션 50.5자세한 내용. 그만큼 인덱스 항목이 삽입 된 경우 결과는 사실입니다. (에이 잘못된 결과는 오류 조건을 나타내지 않지만 색인과 같은 사례는 널 색인을 거부하는 것을 거부합니다.)
IndexBulkDeleteresult * Ambulkdelete (indexvacuuminfo *info, IndexBulkDeleterEsult *통계, indexBulkDeleteCallback 콜백, void *callback_state);
인덱스에서 튜플을 삭제합니다. 이것은입니다."Bulk Delete"운영의 고안
전체 색인을 스캔하고 각 항목을 확인하여 구현
삭제 해야하는지 확인하십시오. 통과콜백함수는 스타일로 호출해야합니다콜백 (TID,
callback_state) 반환 bool, 어떤지 여부를 결정합니다
참조 된 TID로 식별 된 특정 인덱스 항목은
삭제됩니다. null 또는 palloc'd struct를 반환해야합니다
삭제 효과에 대한 통계를 포함합니다
작업. 정보가 필요하지 않으면 NULL을 반환해도 괜찮습니다.
계속해서amvacuumcleanup
.
제한 때문에maintenance_work_mem, Ambulkdelete
이상으로 호출해야 할 수도 있습니다
일단 많은 튜플을 삭제해야 할 때. 그만큼Stats인수는 이전 호출의 결과입니다
이 색인의 경우 (A 내 첫 번째 호출의 경우 NULL입니다.진공작동). 이것은 AM을 허용합니다
전체 작업에 대한 통계를 축적합니다. 일반적으로,Ambulkdelete
수정 및 반환됩니다
통과 된 경우 같은 구조물통계IS
널 아님.
indexBulkDeleteresult * amvacuumcleanup (indexvacuuminfo *info, indexbulkdeleteresult *stats);
A 이후 청소진공작동
(0 이상Ambulkdelete
전화).
이것은 반환 지수를 넘어서는 아무것도 할 필요가 없습니다.
통계이지만 재생성과 같은 대량 정리를 수행 할 수 있습니다.
빈 색인 페이지.통계마지막Ambulkdelete
반환 된 통화, 또는
null ifAmbulkdelete
호출되지 않았습니다
튜플을 삭제할 필요가 없기 때문입니다. 결과가 null이 아닌 경우
Palloc'd Struct이어야합니다. 포함 된 통계는 가능합니다
업데이트에 사용pg_class보고진공ifVerbose가 제공됩니다. 이면 NULL을 반환해도 괜찮습니다
동안 색인이 전혀 변경되지 않았습니다.진공작동이지만 그렇지 않으면 통계를 수정합니다
반품해야합니다.
무효 amcostestestimate (plannerinfo *root, indexoptinfo *index, List *Indexquals, reploptinfo *outer_rel, Cost *IndexStartUpCost, 비용 *IndextOtalCost, 선택성 *indexSelectivity, 이중 *색인 상관 관계);
지수 스캔 비용을 추정합니다. 이 기능은입니다 완전히 묘사PostgreSQL : 문서 : 8.3 : 색인 무지개 토토 추정 기능, 아래.
바이트 * Amoptions (ArrayType *재로포, bool validate);
인덱스에 대한 재리포 배열을 구문 분석하고 검증하십시오. 이것은 Null Null Reloptions 배열이 색인.재학is텍스트양식의 항목을 포함하는 배열이름=value. 함수는 a를 구성해야합니다.BYTEA값,이 값은rd_options인덱스 필드 relcache 입력. 의 데이터 내용BYTEA값은 정의 할 액세스 방법을 위해 열려 있습니다. 그러나 표준 액세스 방법은 현재 모두 구조물을 사용합니다stdrdoptions. 언제validate사실입니다. 함수는 a를보고해야합니다 옵션이 인식되지 않은 경우 적절한 오류 메시지 잘못된 값이 있습니다. 언제validateis 거짓, 유효하지 않은 항목은 조용히 무시해야합니다. (validate이미 옵션을로드 할 때 거짓입니다 저장PG_CATALOG16512_16731
물론 인덱스의 목적은 스캔을 지원하는 것입니다. 인덱스 가능한 튜플여기서조건, 종종 a예선또는스캔 키. 색인의 의미론 스캔은 더 자세히 설명합니다섹션 50.3, 아래. 스캔 관련 인덱스 액세스 방법이 제공 해야하는 기능은 다음과 같습니다.
indexscandesc Ambeginscan (관계 색인 상관, int nkeys, 스캔 키 키);
새 스캔을 시작하십시오. 그만큼키배열 (OF
길이nkeys) 스캔 키를 설명합니다.
인덱스 스캔의 경우. 결과는 Palloc'd 구조물이어야합니다. 을 위한
구현 이유 인덱스 액세스 방법필수호출 하여이 구조물을 만듭니다RelationGetIndexScan ()
. 대부분
사례Ambeginscan
그 자체
그 전화를하는 것 이상의 것 이상; 흥미로운 부분
인덱스 스캔 시작이Amrescan
.
부울 AmgetTuple (IndexScandesc Scan, 방향 방향);
주어진 스캔에서 다음 튜플 가져 오기 주어진 방향 (인덱스의 앞 또는 뒤로). a 일치하는 튜플이 남아 있지 않으면 튜플이 얻어졌습니다. 에서 TRUE CASE 튜플 티드가에 저장됩니다.스캔구조. 참고"성공"인덱스에만 포함된다는 것을 의미합니다 스캔 키와 일치하는 항목은 튜플이 반드시 여전히 힙에 존재하거나 발신자의 스냅 샷을 통과합니다. 시험.
부울 Amgetmulti (IndexScandesc Scan, Itempointer Tids, int32 max_tids, int32 *returned_tids);
주어진 스캔에서 여러 튜플을 가져 오십시오. 이면 진실을 반환합니다
일치하는 튜플이 남아 있지 않으면 스캔이 계속되어야합니다.tids발신자가 공급 배열을 가리 킵니다
의max_tids ItemPointerData레코드, 통화가 채워집니다
일치하는 튜플의 소식과 함께.*returned_tids는 TID 수로 설정됩니다
실제로 돌아 왔습니다. 이것은보다 작을 수 있습니다.max_tids또는 심지어 반환 값이있을 때에도 0
사실입니다. (이 조항은 액세스 방법을 선택할 수 있습니다
스캔에서 가장 효율적인 중지 지점 (예 : 색인)
페이지 경계.)Amgetmulti
andAmgetTuple
에서 사용할 수 없습니다
동일한 인덱스 스캔; 사용할 때도 다른 제한 사항이 있습니다Amgetmulti
, 설명 된대로PostgreSQL : 문서 : 8.3 : 색인 윈 토토.
무효 Amrescan (IndexScandesc Scan, 스캔 키 키);
새로운 스캔 키로 주어진 스캔을 다시 시작하십시오 (
이전 키를 계속 사용하면 NULL이 전달됩니다키). 숫자는 불가능합니다
변화 할 키의. 실제로 재시작 기능이 사용됩니다
중첩 루프 조인으로 새로운 외부 튜플을 선택할 때
새로운 키 비교 값이 필요하지만 스캔 키 구조
동일하게 유지됩니다. 이 기능은 또한에 의해 호출됩니다.relationgetIndexScan ()
이므로 사용됩니다
인덱스 스캔 및 저장소의 초기 설정.
무효 AmendScan (IndexScandesc Scan);
스캔 및 릴리스 리소스를 종료하십시오. 그만큼스캔구조 자체가 해방되지 않아야합니다 액세스 방법으로 내부적으로 가져온 잠금 또는 핀은 출시된.
무효 Ammarkpos (indexscandesc scan);
마크 현재 스캔 위치. 액세스 방법은 필요합니다 스캔 당 기억 한 스캔 위치를 지원합니다.
무효 amrestpos (indexscandesc scan);
스캔을 가장 최근에 표시된 위치로 복원하십시오.
컨벤션별PG_PROC입력
인덱스 사설 토토 사이트 방법 함수는 올바른 수를 보여 주어야합니다.
인수, 그러나 모두 유형으로 선언내부(대부분의 인수에는 유형이 있기 때문에
SQL에 알려지지 않았으며 사용자가
어쨌든 직접 기능). 반환 유형은로 선언됩니다.void, 내부또는부울적절하게. 유일한 예외
이다Amoptions
올바르게 선언 됨텍스트 []andbool그리고 반환BYTEA. 이 조항은 클라이언트 코드를 실행할 수 있습니다Amoptions
타당성을 테스트합니다
옵션 설정.