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

54.2. 색인 토토 사이트 추천 방법 기능

인덱스 구성 및 유지 보수 기능은 인덱스입니다 액세스 방법은 다음과 같습니다.

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

새 인덱스 구축. 색인 관계는 물리적으로 이루어졌습니다 생성되었지만 비어 있습니다. 고정 된 내용으로 채워야합니다 토토 사이트 추천 방법에 필요한 데이터와 모든 튜플에 대한 항목 이미 테이블에 존재합니다. 일반적으로Ambuild함수는 호출IndexBuildHeapScan ()테이블을 스캔하려면 기존 튜플과 삽입 해야하는 키를 계산합니다. 색인. 함수는 palloc'd struct를 포함하는 것을 반환해야합니다 새로운 지수에 대한 통계.

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

빈 색인을 작성하고 초기화 포크에 작성하십시오. 주어진 관계의 (init_forknum). 이 방법은 만 불러옵니다 예정된 테이블의 경우; 초기화에 기록 된 빈 색인 포크는 각 서버의 기본 관계 포크에 복사됩니다. 다시 시작.

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

새 튜플을 기존 인덱스에 삽입하십시오. 그만큼andisnull배열 인덱싱 할 핵심 값을 제공하고heap_tid색인이 표시됩니다. 액세스 인 경우 메소드는 고유 인덱스를 지원합니다 (ITSPG_AM.amcanunique플래그는 사실입니다) 그런 다음Checkunique표시합니다 독창성 점검 유형. 이것은에 따라 다릅니다 독특한 제약이 연기 가능 여부; 보다섹션 54.5자세한 내용. 보통 토토 사이트 추천 방법은 만 있으면됩니다.heprelation고유성을 수행 할 때 매개 변수 확인 (그 이후로 확인하려면 힙을 조사해야합니다. 튜플 라이벌).

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

일부 인덱스는 모든 튜플을 색인화하지 않을 수 있습니다. 튜플이 아닌 경우 인덱싱,Aminsert그냥해야합니다 아무것도하지 않고 반환합니다.

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

인덱스에서 튜플을 삭제합니다. 이것은입니다."벌크 삭제"의도 된 작동 전체 색인을 스캔하고 각 항목을 확인하여 구현 삭제 해야하는지 확인하십시오. 통과콜백함수는 스타일로 호출해야합니다콜백 (TID, callback_state) 반환 bool참조 된 TID로 식별 된 특정 인덱스 항목은 다음과 같습니다. 삭제하십시오. NULL 또는 PALLOC'D 구조물을 포함하는 것을 반환해야합니다 삭제 작업의 영향에 대한 통계. 괜찮습니다 정보를 전달할 필요가없는 경우 NULL 리턴 NULLamvacuumcleanup.

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

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

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

PostgreSQL 8.4, amvacuumcleanup도 호출됩니다 완료시분석작동. ~ 안에 이 사례통계는 항상 무효이며 반환 값은 무시됩니다. 이 사례는 구별 할 수 있습니다 점검Info- Analyze_only. 그것은 토토 사이트 추천 방법은 포스트 삽입을 제외하고는 아무것도하지 않는 것이 좋습니다 그러한 전화로 정리하고 Autovacuum 근로자에서만 프로세스.

bool
Amcanreturn (관계 색인 상관);

색인이 지원할 수 있는지 확인인덱스 전용 스캔인덱스 된 열을 반환하여 Indextuple 형태의 인덱스 항목에 대한 값. 진실을 반환하십시오 그렇다면 그렇지 않으면 거짓입니다. 인덱스 AM이 인덱스 전용을 지원할 수없는 경우 스캔 (예를 들어 해시 값 만 저장하는 해시입니다. 원래 데이터), 설정하기에 충분합니다Amcanreturn필드 ~ 0PG_AM.

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

지수 스캔 비용을 추정합니다. 이 기능은 설명됩니다 완전히PostgreSQL : 문서 : 9.3 : 색인 사설 토토 추정 기능, 아래에.

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

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

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

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,
            방향 방향);

주어진 스캔에서 다음 튜플 가져 오기 주어진 방향 (인덱스의 앞 또는 뒤로). a 일치하는 튜플이 남아 있지 않으면 튜플이 얻어졌습니다. 진실로 케이스 튜플 티드가에 저장됩니다.스캔구조. 참고"성공"수단 인덱스에 스캔 키와 일치하는 항목이 포함되어 있습니다. 튜플이 여전히 힙에 여전히 존재하는 것은 아닙니다. 발신자의 스냅 샷 테스트를 통과하십시오. 성공에,AmgetTupleSETscan- xs_rechecktrue 또는 false로. 거짓은 그것을 의미합니다 인덱스 항목이 스캔 키와 일치하는지 확실합니다. 진정한 수단 이것은 확실하지 않으며 스캔으로 표시되는 조건 키는 힙 튜플을 가져온 후에 다시 확인해야합니다. 이 조항은 지원합니다"Lossy"색인 운영자. 다시 확인하면 스캔으로 만 확장됩니다 정황; 부분 색인 술어 (있는 경우)는 다시 확인되지 않습니다 에 의해amgettuple발신자.

인덱스가 인덱스 전용 스캔을 지원하는 경우 (예 :AmcanreturnTRUE를 반환합니다) AM도 확인해야합니다scan- xs_want_itup인덱스 항목에 대한 원래 색인 데이터를 양식으로 반환합니다. 의Indextuple포인터 저장scan- xs_itup, 튜플 디스크립터와 함께scan- xs_itupdesc. (관리의 관리 포인터에서 참조 된 데이터는 액세스 방법입니다 책임. 데이터는 적어도 다음까지 좋은 상태를 유지해야합니다amgettuple, Amrescan또는AMENDSCAN스캔을 요청하십시오.)

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

int64
AmgetBitMap (IndexScandesc Scan,
             tidbitmap *tbm);

주어진 스캔에서 모든 튜플을 가져와 발신자 제공Tidbitmap(즉, 또는 튜플 ids 세트에 이미 비트 맵에있는 세트에 대한 세트). 그만큼 가져온 튜플의 수가 반환됩니다 (이것은 단지 대략적인 카운트, 예를 들어 일부 AMS는 복제물을 감지하지 않습니다). 비트 맵에 튜플 ID를 삽입하는 동안AmgetBitMap특정 튜플 ID에는 스캔 조건이 필요합니다. 이것은 와 유사하다XS_RECHECK출력 매개 변수amgettuple. 참고 : 현재 구현,이 기능에 대한 지원은 다음과 같습니다 비트 맵 자체의 손실 저장에 대한 지원이므로 발신자는 스캔 조건과 부분 색인을 모두 확인합니다. 재확인 가능한 튜플에 대한 술어 (있는 경우). 항상 그런 것은 아닙니다 그러나 사실,AmgetBitMapandamgettuple동일하게 사용할 수 없습니다 인덱스 스캔; 사용할 때도 다른 제한 사항이 있습니다AmgetBitMap, 설명 된대로섹션 54.3.

theAmgetBitMap함수 만 필요합니다 액세스 방법이 지원되는 경우 제공됩니다"비트 맵"인덱스 스캔. 그렇지 않으면AmgetBitMap필드PG_AM행이 0으로 설정되어야합니다.

무효
AmendScan (IndexScandesc Scan);

스캔 및 릴리스 리소스를 종료하십시오. 그만큼스캔구조물 자체가 해방되어서는 안됩니다 액세스 방법으로 내부적으로 가져온 잠금 또는 핀은 릴리스 된 다른 메모리뿐만 아니라Ambeginscan및 기타 스캔 관련 기능.

무효
Ammarkpos (indexscandesc scan);

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

무효
amrestpos (indexscandesc scan);

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

컨벤션별PG_PROC색인 토토 사이트 추천 방법 기능은 올바른 수를 표시해야합니다. 인수, 그러나 모두 유형으로 선언내부(대부분의 인수에는 유형이 있기 때문에 SQL에 알려지지 않았으며 사용자가 함수를 호출하는 것을 원하지 않습니다. 어쨌든 직접). 반환 유형은로 선언됩니다.void, 내부또는부울적절하게. 유일한 예외는입니다.Amoptions, 올바르게해야합니다 복용으로 선언텍스트 []andbool및 반환BYTEA. 이것 프로비션은 클라이언트 코드를 실행할 수 있도록합니다Amoptions옵션의 유효성을 테스트합니다 설정.