이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 62.2. 색인 액세스 토토 결과 기능버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

55.2. 색인 액세스 방법 기능

스포츠 토토 베트맨 액세스 방법이 제공 해야하는 색인 ​​구성 및 유지 관리 기능은 다음과 같습니다.

indexbuildresult *
Ambuild (관계 쌓기,
         관계 색인 상관,
         indexInfo *indexInfo);

새 스포츠 토토 베트맨 구축. 스포츠 토토 베트맨 관계는 물리적으로 생성되었지만 비어 있습니다. 액세스 방법에 필요한 고정 된 데이터와 테이블에 이미 존재하는 모든 튜플의 항목으로 채워야합니다. 일반적으로Ambuild함수가 호출됩니다indexBuildHeapScan ()기존 튜플의 테이블을 스캔하고 스포츠 토토 베트맨에 삽입 해야하는 키를 계산하려면. 이 함수는 새 스포츠 토토 베트맨에 대한 통계를 포함하는 Palloc'D 구조물을 반환해야합니다.

무효
Ambuildempty (관계 색인 상관);

빈 색인을 구축하고 초기화 포크 (에 쓰십시오.init_forknum10960_11152

bool
Aminsert (관계 색인 상관,
          데이텀 *값,
          bool *isnull,
          ItemPointer heap_tid,
          관계 중심,
          indexUniqueCheck Checkunique);

새 튜플을 기존 스포츠 토토 베트맨에 삽입하십시오. 그만큼isnull배열은 인덱싱 할 키 값을 제공하고heap_tid색인이 표시됩니다. 액세스 방법이 고유 스포츠 토토 베트맨를 지원하는 경우 (ITSPG_AM.amcanunique플래그는 사실입니다) 그런 다음Checkunique수행 할 독창성 검사 유형을 나타냅니다. 이것은 고유 한 제약이 연기 가능 여부에 따라 다릅니다. 보다PostgreSQL : 문서 : 9.4 : 색인 토토 결과 확인자세한 내용. 일반적으로 액세스 방법은 만 있으면됩니다.heprelation고유성 검사를 수행 할 때 매개 변수 (그 이후로 튜플 라이벌을 확인하기 위해 힙을 조사해야합니다)..

함수의 부울 결과 값은에만 중요합니다.Checkuniqueis고유 한 _check_partial. 이 경우 실제 결과는 새로운 항목이 고유 한 반면, 허위는 비 유적 일 수 있음을 의미합니다 (그리고 지연된 독창성 점검이 예정되어 있어야 함). 다른 경우 지속적인 잘못된 결과가 권장됩니다.

일부 스포츠 토토 베트맨는 모든 튜플을 색인화하지 않을 수 있습니다. 튜플을 색인화하지 않으면12655_12665아무것도하지 않고 돌아와야합니다.

IndexBulkDeleteresult *
Ambulkdelete (indexvacuuminfo *info,
              IndexBulkDeleterEsult *통계,
              indexBulkDeleteCallback 콜백,
              void *callback_state);

스포츠 토토 베트맨에서 튜플을 삭제합니다. 이것은입니다."벌크 삭제"전체 스포츠 토토 베트맨를 스캔하고 각 항목을 확인하여 삭제 해야하는지 확인하여 구현하려는 작업. 통과콜백함수는 스타일로 호출해야합니다콜백 (TID, callback_state) 반환 bool, 참조 된 TID로 식별 된 특정 인덱스 항목이 삭제 될지 여부를 결정합니다. 삭제 작업의 영향에 대한 통계를 포함하는 NULL 또는 PALLOC'D 구조물을 반환해야합니다. 정보를 전달할 필요가 없으면 NULL을 반환해도 괜찮습니다amvacuumcleanup.

제한 때문에maintenance_work_mem, Ambulkdelete많은 튜플을 삭제할 때 두 번 이상 호출해야 할 수도 있습니다. 그만큼통계인수는이 지수에 대한 이전 호출의 결과입니다 (a 내 첫 번째 호출의 경우 null입니다.진공작동). 이를 통해 AM은 전체 작업에 걸쳐 통계를 축적 할 수 있습니다. 일반적으로,Ambulkdelete통과 된 경우 동일한 구조물을 수정하고 반환합니다통계

indexBulkDeleteresult *
amvacuumcleanup (indexvacuuminfo *info,
                 indexbulkdeleteresult *stats);

A 이후 청소진공작동 (0 이상Ambulkdelete전화). 이것은 인덱스 통계를 반환하는 것 외에는 아무것도 할 필요는 없지만 빈 색인 페이지를 되 찾는 것과 같은 대량 정리를 수행 할 수 있습니다.통계마지막Ambulkdelete통화 반환 또는 null ifAmbulkdelete튜플을 삭제할 필요가 없기 때문에 호출되지 않았습니다. 결과가 null이 아닌 경우 palloc'd 구조물이어야합니다. 포함 된 통계는 업데이트에 사용됩니다PG_CLASS, 그리고에 의해보고됩니다진공ifVerbose가 제공됩니다. 스포츠 토토 베트맨가 전혀 변경되지 않으면 NULL을 반환해도 괜찮습니다진공작동이지만 그렇지 않으면 올바른 통계를 반환해야합니다.

postgresql 8.4, amvacuumcleanup완성시 호출분석작동. 이 경우통계| 항상 null이며 모든 반환 값은 무시됩니다. 이 사례는 점검을 통해 구별 할 수 있습니다Info- Analyze_only. 액세스 방법은 그러한 통화에서 삽입 후 청소를 제외하고는 아무것도하지 않는 것이 좋습니다.

bool
Amcanreturn (관계 색인 상관);

색인이 지원할 수 있는지 확인스포츠 토토 베트맨 전용 스캔an의 형식으로 스포츠 토토 베트맨 항목에 대한 스포츠 토토 베트맨 열 값을 반환하여Indextuple. 그렇다면 true를 반환하십시오. 인덱스 AM이 스포츠 토토 베트맨 전용 스캔을 지원할 수없는 경우 (예제는 해시입니다.Amcanreturn필드 ~ 0PG_AM.

무효
amcostestestimate (plannerinfo *root,
                IndexPath *Path,
                더블 루프 _count,
                Cost *IndexStartUpCost,
                비용 *IndextOtalCost,
                선택성 *indexSelectivity,
                이중 *색인 상관 관계);

스포츠 토토 베트맨 스캔 비용을 추정합니다. 이 기능은 완전히 설명됩니다PostgreSQL : 문서 : 9.4 : 색인 토토 베이 추정 기능, 아래.

BYTEA *
Amoptions (ArrayType *재로포,
           bool validate);

인덱스에 대한 재리포 배열을 구문 분석하고 검증하십시오. 이를 인덱스에 대해 널리화되지 않은 다시 배열이 존재할 때만 가능합니다.다시장is텍스트양식의 항목을 포함하는 배열이름=value. 함수는 a를 구성해야합니다.BYTEA값은rd_options​​스포츠 토토 베트맨 Relcache 항목 필드. 의 데이터 내용BYTEA값은 접근 방법을 정의 할 수 있도록 열려 있습니다. 표준 액세스 방법의 대부분은 구조물을 사용합니다stdrdoptions. 언제validate사실, 함수는 인식 할 수 없거나 잘못된 값이있는 경우 적절한 오류 메시지를보고해야합니다. 언제validate거짓입니다. 유효하지 않은 항목은 조용히 무시되어야합니다. (validate이미 저장된 옵션을로드 할 때PG_CATALOG; 액세스 방법이 옵션에 대한 규칙을 변경 한 경우에만 잘못 입력 할 수 있으며,이 경우 쓸모없는 항목을 무시하는 경우 적절합니다.) 기본값 동작이 원하는 경우 NULL을 반환해도 괜찮습니다..

물론 스포츠 토토 베트맨의 목적은 색인과 일치하는 튜플 스캔을 지원하는 것입니다여기서조건, 종종 a라고합니다.예선또는스캔 키. 스포츠 토토 베트맨 스캐닝의 의미론은 더 자세히 설명합니다PostgreSQL : 문서 : 9.4 : 인덱스 토토 커뮤니티, 아래. 인덱스 액세스 방법이 지원할 수 있습니다"일반"색인 스캔,"비트 맵"인덱스 스캔 또는 둘 다. 인덱스 액세스 방법이 제공하거나 제공 할 수있는 스캔 관련 기능은 다음과 같습니다.

indexscandesc
Ambeginscan (관계 색인 상관,
             int nkeys,
             int norderbys);

스포츠 토토 베트맨 스캔 준비. 그만큼nkeysandNorderbys매개 변수는 스캔에 사용될 quals 및 주문 연산자의 수를 나타냅니다. 이들은 공간 할당 목적에 유용 할 수 있습니다. 스캔 키의 실제 값은 아직 제공되지 않았습니다. 결과는 Palloc'd 구조물이어야합니다. 구현 이유에 따라 인덱스 액세스 방법필수호출 하여이 구조물을 만듭니다RelationGetIndexScan (). 대부분의 경우Ambeginscan그 전화를 걸고 자물쇠를 얻는 것 이상은 거의 없습니다. 스포츠 토토 베트맨 스캔 스타트 업의 흥미로운 부분은Amrescan.

무효
Amrescan (IndexScandesc Scan,
          스캔 키 키,
          int nkeys,
          Scankey Orderbys,
          int norderbys);

새로운 스캔 키를 사용하여 인덱스 스캔을 시작하거나 다시 시작하십시오. (이전에 통과 한 키를 사용하여 다시 시작하려면 NULL이 전달됩니다및/또는Orderbys.) 키 나 주문별 운영자의 수가 전달 된 것보다 더 크게 허용되지 않습니다Ambeginscan. 실제로 재시작 기능은 중첩 루프 조인으로 새로운 외부 튜플을 선택할 때 사용되므로 새로운 키 비교 값이 필요하지만 스캔 키 구조는 동일하게 유지됩니다..

부울
AmgetTuple (IndexScandesc Scan,
            방향 방향);

주어진 스캔에서 다음 튜플을 가져와 주어진 방향으로 이동합니다 (스포츠 토토 베트맨의 앞뒤). 튜플이 얻어지면 true를 반환하고, 일치하는 튜플이 남아 있지 않으면 거짓. 진정한 경우 튜플 티드가에 저장됩니다.스캔구조. 참고"성공"는 인덱스에 스캔 키와 일치하는 항목이 포함되어 있음을 의미합니다. 튜플이 여전히 힙에 여전히 존재하거나 발신자의 스냅 샷 테스트를 통과하지는 않습니다. 성공에,amgettupleSETscan- xs_rechecktrue 또는 false로. False는 인덱스 항목이 스캔 키와 일치하는 것이 확실하다는 것을 의미합니다. True는 이것이 확실하지 않다는 것을 의미하며, 스캔 키로 표시되는 조건은 힙 튜플을 가져온 후에 다시 확인해야합니다. 이 조항은 지원합니다"Lossy"색인 연산자. 재확인은 스캔 조건으로 만 확장됩니다. 부분 색인 술어 (있는 경우)는에 의해 다시 확인되지 않습니다.amgettuple발신자.

인덱스가 스포츠 토토 베트맨 전용 스캔을 지원하는 경우 (예 :Amcanreturntrue를 반환합니다), 성공시 AM도 확인해야합니다scan- xs_want_itupIndextuple포인터 저장scan- xs_itup, 튜플 디스크립터scan- xs_itupdesc. (포인터에서 언급 한 데이터 관리는 액세스 방법의 책임입니다. 데이터는 다음까지 적어도 잘 유지되어야합니다amgettuple, Amrescan또는AMENDSCAN스캔 요청)

theamgettuple액세스 방법이 지원되는 경우에만 기능을 제공해야합니다"일반"인덱스 스캔. 그렇지 않으면amgettuple필드PG_AM행이 0으로 설정되어야합니다.

int64
AmgetBitMap (IndexScandesc Scan,
             tidbitmap *tbm);

주어진 스캔에서 모든 튜플을 가져 와서 발신자 공급에 추가Tidbitmap(즉, 이미 비트 맵에있는 세트에 대한 튜플 ID 세트). 가져온 튜플의 수는 반환됩니다 (예 : 일부 AMS는 중복을 감지하지 못하는 것과 같습니다). 비트 맵에 튜플 ID를 삽입하는 동안AmgetBitMap특정 튜플 ID에 스캔 조건의 재확인이 필요하다는 것을 나타낼 수 있습니다. 이것은와 유사합니다XS_RECHECK출력 매개 변수amgettuple. 참고 : 현재 구현 에서이 기능에 대한 지원은 비트 맵 자체의 손실 저장에 대한 지원과 충돌하여 발신자는 스캔 조건과 재확인 가능한 튜플에 대한 부분 색인 술어 (있는 경우)를 다시 확인합니다. 그러나 항상 사실이 아닐 수도 있습니다.AmgetBitMapandamgettuple동일한 인덱스 스캔에서 사용할 수 없습니다. 사용할 때도 다른 제한 사항이 있습니다AmgetBitMap, 설명 된대로PostgreSQL : 문서 : 9.4 : 인덱스 토토 커뮤니티.

theAmgetBitMap기능이 지원되는 경우에만 제공되어야합니다"비트 맵"인덱스 스캔. 그렇지 않으면AmgetBitMap필드PG_AM행이 0으로 설정되어야합니다.

무효
AmendScan (IndexScandesc Scan);

스캔 및 릴리스 리소스를 종료하십시오. 그만큼스캔구조물 자체는 해제되어서는 안되지만, 액세스 방법으로 내부적으로 채취 한 잠금 또는 핀은 물론에 할당 된 다른 메모리를 해제해야합니다.Ambeginscan및 기타 스캔 관련 기능.

무효
Ammarkpos (indexscandesc scan);

마크 현재 스캔 위치. 액세스 방법은 스캔 당 기억 한 스캔 위치 만 지원하면됩니다.

무효
amrestpos (indexscandesc scan);

스캔을 가장 최근에 표시된 위치로 복원하십시오.

컨벤션별PG_PROC스포츠 토토 베트맨 액세스 방법 기능에 대한 항목은 올바른 수의 인수를 표시해야하지만 모두 유형으로 선언해야합니다내부(대부분의 인수에는 SQL에 알려지지 않은 유형이 있기 때문에 사용자가 기능을 직접 호출하는 것을 원하지 않기 때문에). 반환 유형은로 선언됩니다.void, 내부또는부울적절하게. 유일한 예외는입니다.Amoptions텍스트 []andbool그리고 반환BYTEA. 이 조항은 클라이언트 코드를 실행할 수 있습니다Amoptions옵션 설정의 유효성을 테스트하려면