이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 62.3. 인덱스 메이저 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

52.3. 토토 사이트 순위 스캐닝

인덱스 스캔에서 인덱스 액세스 방법은 다음을 담당합니다. 이미 알려진 모든 튜플의 TID를 역류합니다. 일치하는 것은스캔 키. 접근 방법은아님관련됨 실제로 토토 사이트 순위의 상위 테이블에서 해당 튜플을 가져오는 과정에서 스캔 시간이 지났는지 여부를 판단하는 것도 아닙니다. 자격 시험 또는 기타 조건.

스캔 키는 다음의 내부 표현입니다.어디양식의 절index_key 연산자 상수, 여기서 인덱스 키는 다음 중 하나입니다. 인덱스의 열과 연산자는 해당 인덱스 열과 관련된 연산자 계열입니다. 인덱스 스캔에는 암시적으로 AND로 연결된 0개 이상의 스캔 키가 있습니다. 반환된 튜플은 표시된 모든 항목을 만족할 것으로 예상됩니다. 조건.

액세스 방법은 색인이 다음과 같다고 보고할 수 있습니다.손실또는 특정 항목에 대해 재확인이 필요함 쿼리. 이는 인덱스 스캔이 모든 데이터를 반환한다는 것을 의미합니다. 스캔 키를 전달하는 항목과 추가 항목이 있을 수 있음 그렇지 않습니다. 그러면 핵심 시스템의 인덱스 스캔 기계가 확인을 위해 인덱스 조건을 힙 튜플에 다시 적용합니다. 정말 선택해야 할지 말지. 재검사를 하면 옵션이 지정되지 않은 경우 인덱스 스캔은 정확히 일치하는 항목 집합입니다.

다음을 보장하는 것은 전적으로 액세스 방법에 달려 있습니다. 모든 항목을 통과하는 항목만 올바르게 찾습니다. 주어진 스캔 키. 또한 핵심 시스템은 모든 것을 간단히 전달합니다.어디색인과 일치하는 절 의미론적 분석 없이 키 및 연산자 계열 중복되는지 모순되는지 확인합니다. 로서 예, 주어진여기서 x 4 AND x 14어디에서x토토 사이트 순위된 B-트리입니다 열은 b-트리에 남습니다.amrescan함수는 첫 번째 스캔 키는 중복되므로 폐기할 수 있습니다. 정도 동안 전처리가 필요함amrescan정도에 따라 달라집니다. 인덱스 액세스 방법은 스캔 키를 a로 줄여야 합니다."정규화됨"양식.

일부 액세스 방법은 잘 정의된 형식으로 색인 항목을 반환합니다. 주문, 다른 사람들은 그렇지 않습니다. 실제로는 두 가지 다른 방법이 있습니다. 액세스 방법은 정렬된 출력을 지원할 수 있습니다.

  • 항상 자연 항목을 반환하는 액세스 방법 데이터(예: btree)의 순서를 설정해야 합니다.pg_am.암캔오더참입니다. 현재 이러한 액세스 메소드는 해당 메소드에 대해 btree 호환 전략 번호를 사용해야 합니다. 항등 및 순서 연산자.

  • 순서 연산자를 지원하는 액세스 방법을 설정해야 함pg_am.amcanorderbyop참입니다. 이는 다음을 나타냅니다. 인덱스가 순서대로 항목을 반환할 수 있다는 것 만족스럽다주문 기준 index_key 연산자 상수. 해당 형식의 스캔 수정자 전달할 수 있습니다.amrescan다음과 같이 이전에 설명했습니다.

amgettuple함수에는방향인수, 둘 중 하나일 수 있음ForwardScanDirection(일반적인 경우) 또는BackwardScanDirection. 첫 번째 경우 이후에 전화하세요amrescan지정BackwardScanDirection, 그런 다음 일치하는 인덱스 항목을 스캔하는 대신 뒤에서 앞으로 스캔합니다. 일반적인 앞에서 뒤로 방향으로, 그래서amgettuple마지막으로 일치하는 튜플을 반환해야 합니다 일반적으로 첫 번째 토토 사이트 순위가 아닌 토토 사이트 순위에 포함됩니다. (이는 설정된 액세스 방법에만 발생합니다.암캔오더to true.) 첫 번째 호출 후,amgettuple다음을 준비해야 합니다. 가장 최근부터 어느 방향으로든 스캔을 진행합니다. 반환된 항목입니다. (그러나 만약에pg_am.amcanbackward거짓입니다. 이후의 모든 호출은 첫 번째 방향과 같은 방향을 갖게 됩니다.)

순서화된 스캔을 지원하는 액세스 방법은 다음을 지원해야 합니다."마킹"스캔의 위치 및 나중에 표시된 위치로 돌아갑니다. 같은 입장일 수도 여러 번 복원됩니다. 그러나 한 가지 위치만 있으면 됩니다. 스캔마다 기억됩니다. 새로운ammarkpos호출은 이전에 표시된 호출을 무시합니다. 위치. 순서화된 스캔을 지원하지 않는 액세스 방법 계속해서 표시 및 복원 기능을 제공해야 합니다.pg_am, 하지만 던지게 하는 것만으로도 충분합니다. 호출하면 오류가 발생합니다.

스캔 위치와 마크 위치(있는 경우)는 모두 다음과 같아야 합니다. 동시 삽입에도 일관되게 유지되거나 인덱스에서 삭제됩니다. 새로 삽입된 항목이면 괜찮습니다. 항목이 있었다면 항목을 찾았을 스캔에 의해 반환되지 않았습니다. 스캔이 시작될 때 존재했거나 스캔이 그러한 재검사 또는 백업 시 항목이 삭제되지 않았음에도 불구하고 처음으로 돌아왔습니다. 마찬가지로 동시 삭제 검사 결과에 반영될 수도 있고 반영되지 않을 수도 있습니다. 무엇입니까? 중요한 것은 삽입이나 삭제로 인해 스캔이 중단되지 않는다는 것입니다. 그 자체가 아닌 반환 항목을 놓치거나 늘리십시오. 삽입 또는 삭제되었습니다.

사용하는 대신amgettuple, 인덱스 스캔은 다음으로 수행할 수 있습니다.amgetbitmap한 번의 호출로 모든 튜플을 가져옵니다. 이는 다음보다 눈에 띄게 더 효율적일 수 있습니다.amgettuple왜냐하면 회피를 허용하기 때문입니다. 액세스 방법 내에서 잠금/잠금 해제 주기. 원칙적으로amgetbitmap동일해야 합니다 반복되는 효과amgettuple호출하지만 문제를 단순화하기 위해 몇 가지 제한 사항을 적용합니다. 우선,amgetbitmap반환 모든 튜플을 한 번에 처리하고 스캔 위치를 표시하거나 복원하는 것은 불가능합니다. 지원됩니다. 둘째, 튜플은 비트맵으로 반환됩니다. 특별한 순서가 없기 때문에amgetbitmap않음방향인수. (주문 연산자는 절대 이러한 스캔을 위해 제공됩니다.) 마지막으로,amgetbitmap다음의 잠금을 보장하지 않습니다. 반환된 튜플, 의미는 다음에서 설명됨섹션 52.4.

액세스 방법을 구현하는 것이 허용됩니다. 만amgetbitmap그리고 아님amgettuple또는 그 반대인 경우 내부 구현은 하나의 API 또는 다른 API에 적합하지 않습니다.