| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.3 : 스포츠 토토 베트맨 카탈로그 항목 | PostgreSQL : 문서 : 9.3 : 인덱스 메이저 토토 사이트 방법 인터페이스 정의 | 54장. 색인 토토 사이트 추천 방법 인터페이스 정의 | PostgreSQL : 문서 : 9.3 : 인덱스 토토 커뮤니티 | |
색인 구성 및 유지 관리 기능은 색인이 액세스 방법은 다음을 제공해야 합니다.
IndexBuildResult *
ambuild(관계 힙Relation,
관계 지수관계,
IndexInfo *indexInfo);
새 색인을 구축하세요. 인덱스 관계는 물리적으로
생성되었지만 비어 있습니다. 무엇이든 고정된 것으로 채워야 합니다.
토토 사이트 추천 방법에 필요한 데이터와 모든 튜플에 대한 항목
이미 테이블에 존재합니다. 일반적으로ambuild함수가 호출됩니다IndexBuildHeapScan()테이블을 스캔하려면
기존 튜플을 삽입하고 삽입해야 하는 키를 계산합니다.
색인. 함수는 다음을 포함하는 palloc'd 구조체를 반환해야 합니다.
새 인덱스에 대한 통계입니다.
공허 ambuildempty(관계 indexRelation);
빈 색인을 구축하고 초기화 포크에 씁니다. (INIT_FORKNUM) 주어진 관계. 이 메소드는 호출됩니다. 기록되지 않은 테이블의 경우; 초기화에 기록된 빈 인덱스 포크는 각 서버의 기본 관계 포크 위에 복사됩니다. 다시 시작하세요.
부울
aminsert(관계 인덱스Relation,
데이텀 *값,
부울 *isnull,
ItemPointer heap_tid,
관계 힙관계,
IndexUniqueCheck checkUnique);
기존 색인에 새 튜플을 삽입하십시오.값그리고isnull배열 색인화할 키 값을 제공하고heap_tid은 인덱싱할 TID입니다. 액세스하는 경우 메소드는 고유 인덱스를 지원합니다(그의pg_am.amcanunique플래그가 참임) 그런 다음checkUnique표시 수행할 고유성 검사 유형입니다. 이는 다음에 따라 다릅니다. 고유 제약조건이 연기 가능한지 여부 참조섹션 54.511986_12044힙관계12080_12202
함수의 부울 결과 값은 다음 경우에만 중요합니다.checkUniqueisUNIQUE_CHECK_PARTIAL. 이 경우 TRUE 결과 새 항목이 고유한 것으로 알려졌음을 의미하고, FALSE는 고유할 수 있음을 의미합니다. 고유하지 않아야 합니다(지연된 고유성 확인을 예약해야 함). 다른 경우에는 일정한 FALSE 결과가 권장됩니다.
일부 색인은 모든 튜플을 색인화하지 않을 수 있습니다. 튜플이 그렇지 않은 경우
색인이 생성됩니다.아민서트그냥
아무것도 하지 않고 돌아오세요.
IndexBulkDeleteResult *
ambulkdelete(IndexVacuumInfo *정보,
IndexBulkDeleteResult *통계,
IndexBulkDeleteCallback 콜백,
무효 *callback_state);
색인에서 튜플을 삭제합니다. 이것은"대량 삭제"의도된 작업입니다.
전체 인덱스를 스캔하고 각 항목을 확인하여 구현됩니다.
삭제해야 하는지 확인하세요. 전달된콜백함수는 스타일에서 호출되어야 합니다콜백(TID,
callback_state)는 bool을 반환합니다., 존재 여부를 확인하기 위해
참조된 TID로 식별되는 특정 인덱스 항목은
삭제됩니다. NULL 또는 다음을 포함하는 palloc'd 구조체를 반환해야 합니다.
삭제 작업의 효과에 대한 통계입니다. 그것은 괜찮습니다
전달할 정보가 없으면 NULL을 반환합니다.amvacuumcleanup.
제한적이기 때문에maintenance_work_mem, ambulkdelete다음 이상 호출해야 할 수도 있습니다.
많은 튜플을 삭제해야 할 때 한 번.통계인수는 이전 호출의 결과입니다.
이 인덱스의 경우(a 내의 첫 번째 호출에서는 NULL입니다.진공작업). 이를 통해 AM이 축적될 수 있습니다.
전체 작업에 대한 통계입니다. 일반적으로ambulkdelete동일한 내용을 수정하고 반환합니다.
전달된 경우 구조체통계아님
널.
IndexBulkDeleteResult *
amvacuumcleanup(IndexVacuumInfo *정보,
IndexBulkDeleteResult *통계);
다음 이후 정리진공작동(제로
이상ambulkdelete호출). 이
인덱스 통계를 반환하는 것 외에는 아무 것도 할 필요가 없지만
빈 인덱스 페이지 회수와 같은 대량 정리를 수행할 수 있습니다.통계무엇이든 마지막이군요ambulkdelete호출이 반환되었습니다. 또는 다음의 경우 NULL입니다.ambulkdelete호출되지 않았습니다. 왜냐하면
튜플을 삭제할 필요가 없습니다. 결과가 NULL이 아니면 반드시
palloc'd 구조체여야 합니다. 여기에 포함된 통계는 다음 용도로 사용됩니다.
업데이트pg_class, 보고됩니다.
으로진공if상세주어집니다. 다음과 같은 경우 NULL을 반환해도 괜찮습니다.
인덱스는 동안 전혀 변경되지 않았습니다.진공작업이지만 그렇지 않으면 올바른 통계가 있어야 합니다.
반환됩니다.
현재PostgreSQL 8.4,
amvacuumcleanup또한 호출됩니다
완료 시분석작업. 에서
이 경우통계은 항상 NULL이며 임의입니다.
반환 값은 무시됩니다. 이 경우는 다음과 같이 구분할 수 있습니다.
확인 중info-analyze_only. 그것은
액세스 방법은 삽입 후 작업 외에는 아무것도 수행하지 않는 것이 좋습니다.
그러한 호출의 정리 및 자동 진공 작업자에서만 해당
프로세스.
부울 amcanreturn(관계 indexRelation);
색인이 지원할 수 있는지 확인색인 전용 스캔인덱싱된 열을 반환하여 IndexTuple 형식의 인덱스 항목 값입니다. 참을 반환 그렇다면 그렇지 않으면 거짓입니다. 인덱스 AM이 인덱스 전용을 절대 지원할 수 없는 경우 스캔(예: 해시이며, 스캔하지 않은 해시 값만 저장함) 원본 데이터), 설정하는 것으로 충분합니다.amcanreturn필드를 0으로 설정pg_am.
공허
amcostestimate(PlannerInfo *루트,
IndexPath *경로,
이중 루프_카운트,
비용 *indexStartupCost,
비용 *indexTotalCost,
선택성 *indexSelectivity,
double *indexCorrelation);
인덱스 스캔 비용을 추정합니다. 이 기능은 설명되어 있습니다 완전히 들어옴PostgreSQL : 문서 : 9.3 : 색인 사설 토토 추정 기능, 아래.
바이테아 *
amoptions(ArrayType *reloptions,
부울 검증);
색인에 대한 reloptions 배열을 구문 분석하고 검증합니다. 이것은 인덱스에 대해 null이 아닌 reloptions 배열이 존재할 때만 호출됩니다.reloptions은텍스트다음 형식의 항목을 포함하는 배열이름=값. 함수는 다음을 구성해야 합니다.바이테아값은 다음으로 복사됩니다.rd_options색인의 필드 캐시 항목을 다시 입력합니다. 의 데이터 내용바이테아정의할 토토 사이트 추천 방법에 대한 값이 열려 있습니다. 대부분의 표준 토토 사이트 추천 방법은 struct를 사용합니다.StdRdOptions. 언제확인이 true이면 함수는 다음을 보고해야 합니다. 옵션 중 하나라도 인식되지 않거나 잘못된 값이 있습니다. 언제확인이다 false인 경우 유효하지 않은 항목은 자동으로 무시되어야 합니다. (확인17969_18020pg_catalog; 잘못된 항목 액세스 방법이 다음에 대한 규칙을 변경한 경우에만 찾을 수 있습니다. 옵션이 있으며, 이 경우 더 이상 사용되지 않는 항목을 무시하는 것은 적절합니다.) 기본 동작이 다음과 같은 경우 NULL을 반환해도 괜찮습니다. 원했어요.
물론 색인의 목적은 다음에 대한 검색을 지원하는 것입니다. 인덱싱 가능 항목과 일치하는 튜플어디조건, 종종 a라고 함한정자또는스캔 키. 인덱스 스캐닝의 의미 자세한 내용은PostgreSQL : 문서 : 9.3 : 인덱스 토토 커뮤니티, 아래. 인덱스 액세스 방법은 다음을 지원할 수 있습니다."일반"색인 스캔,"비트맵"색인 스캔 또는 둘 다. 스캔 관련 인덱스 액세스 방법이 제공해야 하거나 제공할 수 있는 기능은 다음과 같습니다.
IndexScanDesc
ambeginscan(관계 인덱스Relation,
int nkeys,
int norderbys);
인덱스 스캔을 준비하세요.n키그리고노더비매개변수는 다음을 나타냅니다.
에서 사용될 한정어 및 순서 연산자의 수
스캔; 이는 공간 할당 목적으로 유용할 수 있습니다. 참고하세요
스캔 키의 실제 값은 아직 제공되지 않습니다. 결과
palloc 구조체여야 합니다. 구현상의 이유로 색인
액세스 방법반드시생성
이 구조체를 호출하여RelationGetIndexScan(). 대부분의 경우ambeginscan만드는 것 이상의 일을 하지 않습니다.
해당 호출 및 아마도 잠금 획득; 흥미로운 부분
인덱스 스캔 시작 중입니다.amrescan.
공허
amrescan(IndexScanDesc 스캔,
스캔키 키,
int nkeys,
ScanKey 주문,
int norderbys);
가능한 경우 새 스캔 키를 사용하여 인덱스 스캔을 시작하거나 다시 시작합니다. (에
이전에 전달된 키를 사용하여 다시 시작하면 NULL이 전달됩니다.키및/또는orderbys.) 참고
키 수 또는 정렬 기준 연산자에는 허용되지 않습니다.
전달된 것보다 더 큰 것ambeginscan. 실제로 다시 시작 기능은 다음과 같습니다.
중첩 루프 조인에 의해 새로운 외부 튜플이 선택될 때 사용됩니다.
그래서 새로운 키 비교 값이 필요하지만 스캔 키 구조는
동일하게 유지됩니다.
부울
amgettuple(IndexScanDesc 스캔,
스캔 방향 방향);
주어진 스캔에서 다음 튜플을 가져오고, 주어진 스캔에서 이동합니다.
방향(인덱스에서 앞으로 또는 뒤로). 다음과 같은 경우 TRUE를 반환합니다.
튜플을 얻었습니다. 일치하는 튜플이 남아 있지 않으면 FALSE입니다. 진실에서는
튜플 TID가에 저장되는 경우스캔구조. 참고하세요"성공"의미
인덱스에 스캔 키와 일치하는 항목이 포함되어 있다는 것,
튜플이 반드시 힙에 계속 존재하거나 그럴 것이라는 의미는 아닙니다.
호출자의 스냅샷 테스트를 통과합니다. 성공하면,amgettuple또한 설정해야 합니다스캔-xs_recheck참 또는 거짓으로. 거짓은 그것을 의미합니다
인덱스 항목이 스캔 키와 일치하는 것이 확실합니다. TRUE는 다음을 의미합니다.
이는 확실하지 않으며 스캔으로 표시되는 조건은
키를 가져온 후 힙 튜플에 대해 키를 다시 확인해야 합니다.
이 조항은 다음을 지원합니다."손실"색인
연산자. 재검사는 스캔에만 적용됩니다.
조건; 부분 인덱스 조건자(있는 경우)는 다시 확인되지 않습니다.
으로amgettuple발신자.
인덱스가 인덱스 전용 스캔을 지원하는 경우(예:amcanreturnTRUE를 반환), 성공 시
AM도 확인해야 합니다.스캔-xs_want_itup, 그것이 사실이라면 반드시
인덱스 항목에 대한 원본 인덱스 데이터를 다음 형식으로 반환합니다.
의IndexTuple포인터가 다음에 저장됨스캔-xs_itup, 튜플 설명자 포함스캔-xs_itupdesc. (관리
포인터가 참조하는 데이터는 액세스 방법의
책임. 데이터는 적어도 다음 시점까지 양호한 상태로 유지되어야 합니다.amgettuple, amrescan, 또는수정스캔스캔을 요청하세요.)
그amgettuple기능만 필요함
액세스 방법이 지원하는 경우 제공됩니다."일반"색인 스캔. 그렇지 않은 경우에는amgettuple필드의 필드pg_am행은 0으로 설정되어야 합니다.
int64
amgetbitmap(IndexScanDesc 스캔,
TIDB비트맵 *tbm);
주어진 스캔에서 모든 튜플을 가져와서
발신자 제공TIDB비트맵(즉, 또는
비트맵에 이미 있는 세트에 튜플 ID 세트를 추가합니다. 는
가져온 튜플의 수가 반환됩니다(이것은 단지
대략적인 개수(예: 일부 AM은 중복을 감지하지 못함)
비트맵에 튜플 ID를 삽입하는 동안amgetbitmap다음을 다시 확인하고 있음을 나타낼 수 있습니다.
특정 튜플 ID에는 검색 조건이 필요합니다. 이것은
와 유사하다xs_recheck출력
매개변수amgettuple. 참고: 에서
현재 구현에서는 이 기능에 대한 지원이 다음과 통합됩니다.
비트맵 자체의 손실 저장을 지원하므로
호출자는 스캔 조건과 부분 인덱스를 모두 다시 확인합니다.
재검사 가능한 튜플에 대한 술어(있는 경우). 항상 그렇지는 않을 수도 있어요
그러나 사실이다.amgetbitmap그리고amgettuple동일하게 사용할 수 없습니다.
인덱스 스캔; 사용할 때 다른 제한 사항도 있습니다.amgetbitmap, 설명된 대로섹션 54.3.
그amgetbitmap기능만 필요함
액세스 방법이 지원하는 경우 제공됩니다."비트맵"색인 스캔. 그렇지 않은 경우에는amgetbitmap필드의 필드pg_am행은 0으로 설정되어야 합니다.
공허 amendscan(IndexScanDesc 스캔);
스캔을 종료하고 자원을 해제합니다.스캔구조체 자체는 해제되어서는 안 됩니다.
접근 방법에 의해 내부적으로 확보된 자물쇠나 핀은 반드시
해제됨 및 기타 할당된 메모리도 포함됨ambeginscan및 기타 스캔 관련 기능.
공허 ammarkpos(IndexScanDesc 스캔);
현재 스캔 위치를 표시합니다. 액세스 방법은 지원만 필요합니다. 스캔당 하나의 기억된 스캔 위치.
공허 amrestrpos(IndexScanDesc 스캔);
가장 최근에 표시된 위치로 스캔을 복원합니다.
관례에 따르면,pg_proc항목에 대한 항목
인덱스 토토 사이트 추천 방법 함수는 올바른 수를 표시해야 합니다.
인수를 사용하지만 모두 유형으로 선언합니다.내부(대부분의 인수에는 다음과 같은 유형이 있으므로
SQL에 알려지지 않았으며 사용자가 함수를 호출하는 것을 원하지 않습니다.
어쨌든 직접). 반환 유형은 다음과 같이 선언됩니다.무효, 내부또는부울적절하게. 유일한 예외는선택사항, 정확해야 합니다.
복용한다고 선언함텍스트[]그리고부울그리고 돌아오는 중바이테아. 이
프로비저닝을 통해 클라이언트 코드를 실행할 수 있습니다.선택 사항옵션의 유효성을 테스트하기 위해
설정.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 다음에 대한 카탈로그 항목 인덱스 | PostgreSQL : 문서 : 9.3 : 인덱스 메이저 토토 사이트 방법 인터페이스 정의 | 인덱스 스캐닝 |