이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 62.3. 인덱스 메이저 롤 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

60.3. 인덱스 롤 토토

인덱스 롤 토토에서 인덱스 액세스 방법은 모든 튜플의 TID를 역류 할 책임이 있습니다.롤 토토 키. 액세스 방법은입니다.not실제로 색인의 상위 테이블에서 튜플을 실제로 가져 오거나 롤 토토의 시간 자격 테스트 또는 기타 조건을 통과하는지 여부를 결정하는 데 관여합니다.

롤 토토 키는 a의 내부 표현입니다.여기서양식 조항index_key 운영자 Constant, 여기서 인덱스 키는 인덱스 열 중 하나이고 연산자는 해당 인덱스 열과 관련된 운영자 제품군의 구성원 중 하나입니다. 인덱스 스캔에는 롤 토토 키가 0 이상이므로 암시 적으로 anded합니다. 반환 된 튜플은 표시된 모든 조건을 충족시킬 것으로 예상됩니다.

액세스 메소드는 인덱스가라고보고 할 수 있습니다.Lossy또는 특정 쿼리에 대해 다시 확인해야합니다. 이는 인덱스 스캔이 롤 토토 키를 전달하는 모든 항목과 그렇지 않은 추가 항목을 반환한다는 것을 의미합니다. 핵심 시스템의 인덱스 스캔 기계는 인덱스 조건을 힙 튜플에 다시 적용하여 실제로 선택 해야하는지 여부를 확인합니다. 다시 확인 옵션이 지정되지 않은 경우 인덱스 스캔은 일치하는 항목 세트를 정확히 반환해야합니다.

주어진 롤 토토 키를 전달하는 모든 항목 만 올바르게 찾을 수 있도록 액세스 방법에 전적으로 달려 있습니다. 또한 핵심 시스템은 단순히 모든 것을 나눠 줄 것입니다.여기서인덱스 키 및 운영자 패밀리와 일치하는 클로스는 의미 분석없이 중복인지 모순되는지 여부를 결정합니다. 예를 들어, 주어진여기서 x 4 및 x 14여기서xB-Tree Indexed 열입니다. B- 트리에 맡겨집니다Amrescan첫 번째 롤 토토 키가 중복되어 버릴 수 있음을 인식하는 기능. 전처리의 정도가 필요한 동안Amrescan인덱스 액세스 방법이 롤 토토 키를 A로 줄이는 데 필요한 정도에 따라 다릅니다.정규화양식.

일부 액세스 방법은 잘 정의 된 순서로 인덱스 항목을 반환하고 다른 액세스 방법은 그렇지 않습니다. 액세스 방법이 정렬 된 출력을 지원할 수있는 두 가지 방법이 실제로 있습니다.

  • 데이터의 자연 순서 (예 : btree)에서 항목을 항상 반환하는 액세스 방법amcanordertrue. 현재 이러한 액세스 방법은 평등 및 주문 운영자에게 Btree 호환 전략 번호를 사용해야합니다.

  • 주문 운영자를 지원하는 액세스 방법을 설정해야합니다amcanorderByoptrue. 이는 인덱스가 순서 만족으로 항목을 반환 할 수 있음을 나타냅니다주문 by index_key 운영자 Constant. 해당 양식의 롤 토토 수정자를 전달할 수 있습니다.Amrescan앞에서 설명한대로.

theamgettuple함수는방향인수, 이것은 둘 중 하나 일 수 있습니다ForwardScandirection(정상적인 경우) 또는BackwardsCandirection. 이후의 첫 번째 전화 인 경우Amrescan지정BackwardsCandiprection, 일치하는 인덱스 항목 세트는 정상적인 전면 간 방향이 아닌 연속 전단을 스캔해야합니다.AmgetTuple일반적으로 첫 번째 튜플이 아니라 인덱스에서 마지막 일치하는 튜플을 반환해야합니다. (이것은 설정된 액세스 방법에 대해서만 발생합니다amcanorderto true.) 첫 번째 호출 후amgettuple가장 최근에 반환 된 항목에서 스캔을 어느 방향 으로든 진행할 준비가되어 있어야합니다. (하지만Amcanbackward거짓입니다. 모든 후속 통화는 첫 번째 방향과 동일한 방향을 갖습니다.)

순서 롤 토토을 지원하는 액세스 방법은 지원해야합니다마킹롤 토토의 위치와 나중에 표시된 위치로 돌아갑니다. 동일한 위치가 여러 번 복원 될 수 있습니다. 그러나 롤 토토 당 하나의 위치 만 기억하면됩니다. 새로운ammarkposCall은 이전에 표시된 위치를 무시합니다. 순서 롤 토토을 지원하지 않는 액세스 방법은 제공 할 필요가 없습니다ammarkposandAmrestros함수indexamroutine; 그 포인터를 대신 널로 설정합니다.

롤 토토 위치와 마크 위치 (있는 경우)는 인덱스의 동시 삽입 또는 삭제에 직면하여 일관되게 유지해야합니다. 롤 토토이 시작될 때 존재했을 때 입력을 찾은 롤 토토으로 새로 삽입 된 항목이 반환되지 않거나, 처음으로 반환되지 않았지만 구조 또는 백업시 해당 항목을 반환하는 롤 토토에 의해 반환되지 않으면 괜찮습니다. 마찬가지로, 동시 삭제는 롤 토토 결과에 반영되거나 반영되지 않을 수 있습니다. 중요한 것은 삽입 또는 삭제로 인해 롤 토토이 삽입되거나 삭제되지 않은 리턴 항목을 놓치거나 곱하지 않는다는 것입니다.

인덱스가 원래 인덱스 데이터 값을 저장하는 경우 (일부 손실 표현이 아님) 지원하는 것이 유용합니다PostgreSQL :, 여기서 인덱스는 힙 튜플의 TID뿐만 아니라 실제 데이터를 반환합니다. 가시성 맵에 TID가 모두 가시 가능한 페이지에 있음을 보여 주면 I/O 만 피할 수 있습니다. 그렇지 않으면 MVCC 가시성을 확인하려면 힙 튜플을 방문해야합니다. 그러나 그것은 액세스 방법의 관심이 아닙니다.

사용하는 대신amgettuple, 인덱스 롤 토토을 수행 할 수 있습니다AmgetBitMap한 번의 전화로 모든 튜플을 가져 오려면. 이것은보다 눈에 띄게 더 효율적일 수 있습니다.amgettuple액세스 방법 내에서 잠금/잠금 해제 사이클을 피할 수 있기 때문입니다. 원칙적으로AmgetBitMap반복되는 것과 동일한 효과가 있어야합니다amgettuple호출이지만 문제를 단순화하기위한 몇 가지 제한을 부과합니다. 가장 먼저,AmgetBitMap모든 튜플을 한 번에 반환하고 롤 토토 위치를 표시하거나 복원하는 것이 지원되지 않습니다. 둘째, 튜플은 특정 주문이없는 비트 맵으로 반환되므로AmgetBitMapa방향인수. (주문 운영자도 그러한 스캔을 위해 공급되지 않습니다.) 또한 인덱스 전용 롤 토토을위한 조항은 없습니다.AmgetBitMap, 인덱스 튜플의 내용을 반환 할 방법이 없기 때문에. 마지막으로,AmgetBitMap반환 된 튜플의 잠그는 것을 보장하지 않으며, 그 의미가 설명되어 있습니다.토토 사이트 추천 : 문서 : 10 : 60.4. 색인 잠금 고려.

액세스 방법 만 구현할 수있는 것이 허용됩니다AmgetBitMapand notamgettuple