72.1. 개요

PostgreSQL지속적인 온 디스크 해시 인덱스 구현이 포함되어 있으며, 이는 완전히 복구 할 수 있습니다. 잘 정의 된 선형 순서가없는 데이터 유형을 포함하여 해시 인덱스에 의해 모든 데이터 유형을 색인화 할 수 있습니다. 해시 인덱스 인덱스가있는 데이터의 해시 값 만 저장하므로 인덱싱되는 데이터 열의 크기에 대한 제한이 없습니다.

해시 인덱스는 단일 열 인덱스 만 지원하며 독창성 점검을 허용하지 않습니다.

해시 인덱스 지원 만=운영자, 따라서 범위 작업을 지정하는 클로스가 해시 인덱스를 활용할 수없는 경우.

각 해시 인덱스 튜플은 실제 열 값이 아닌 4 바이트 해시 값 만 저장합니다. 결과적으로 UUID, URL 등과 같은 더 긴 데이터 항목을 색인화 할 때 해시 인덱스가 B- 트리보다 훨씬 작을 수 있습니다. 열 값이 없으면 모든 해시 인덱스가 손실됩니다. 해시 토토 결과 비트 맵 인덱스 스캔 및 후진 스캔에 참여할 수 있습니다.

해시 토토 결과 더 큰 테이블에서 평등 스캔을 사용하는 선택 및 업데이트가 많은 워크로드에 최적화됩니다. B-Tree 지수에서, 잎 페이지가 발견 될 때까지 검색은 나무를 통해 내려와야합니다. 수백만 행이있는 테이블 에서이 하강은 데이터에 대한 액세스 시간을 증가시킬 수 있습니다. 해시 인덱스의 리프 페이지와 동등한 것을 버킷 페이지라고합니다. 대조적으로, 해시 색인을 사용하면 버킷 페이지에 직접 액세스 할 수 있으므로 더 큰 테이블에서 인덱스 액세스 시간이 줄어 듭니다. "Logical I/O"의 이러한 감소는 Shared_Buffers/RAM보다 더 큰 인덱스/데이터에 대해 더욱 두드러집니다.

해시 토토 결과 해시 값의 고르지 않은 분포에 대처하도록 설계되었습니다. 해시 값이 균등하게 분포 된 경우 버킷 페이지에 직접 액세스 할 수 있습니다. 인서트가 버킷 페이지가 가득 차면 추가 오버플로 페이지가 해당 버킷 페이지에 연결되어 해시 값과 일치하는 인덱스 튜플 스토리지를 로컬로 확장합니다. 쿼리 중에 해시 버킷을 스캔 할 때는 모든 오버플로 페이지를 스캔해야합니다. 따라서 일부 데이터에 대해 불균형 해시 지수는 필요한 블록 액세스 수의 측면에서 실제로 B- 트리보다 더 나빠질 수 있습니다.

오버플로 사례의 결과로 해시 인덱스는 해시 버킷 당 행이 적은 고유 한 거의 고유 한 데이터 또는 데이터에 가장 적합하다고 말할 수 있습니다. 문제를 피하는 한 가지 가능한 방법 중 하나는 부분 색인 조건을 사용하여 인덱스에서 비 유적 값을 제외하는 것이지만 많은 경우에 적합하지 않을 수 있습니다.

B- 트리와 마찬가지로 해시 토토 결과 간단한 인덱스 튜플 삭제를 수행합니다. 이것은 삭제하기에 안전한 것으로 알려진 인덱스 튜플을 삭제하는 지연된 유지 보수 작업입니다 (항목 식별자의 LP_DEAD 비트가 이미 설정된 것). 인서트가 페이지에서 공간을 사용할 수있는 공간이 없으면 죽은 색인 튜플을 제거하려고 시도하여 새 오버플로 페이지를 작성하지 않으려 고 노력합니다. 그 당시 페이지를 고정하면 제거가 발생할 수 없습니다. 죽은 색인 포인터의 삭제는 진공 상태에서도 발생합니다.

가능한 경우 진공 청소기는 오버플로 체인을 최소화하면서 인덱스 튜플을 가능한 한 적은 오버 플로우 페이지에 짜내려고합니다. 오버플로 페이지가 비어 있으면 오버플로 페이지를 다른 버킷에서 재사용 할 수 있도록 오버플로 페이지를 재활용 할 수 있지만 운영 체제로 반환하지는 않습니다. 현재 해시 지수를 Reindex로 재건하는 것 외에는 해시 지수를 축소하는 조항이 없습니다. 버킷 수를 줄일 수있는 조항도 없습니다.

해시 토토 결과 인덱스 된 행 수가 증가함에 따라 버킷 페이지 수를 확장 할 수 있습니다. 해시 키에서 버킷 투-버킷 매핑은 인덱스를 점진적으로 확장 할 수 있도록 선택됩니다. 새 버킷이 인덱스에 추가 될 때, 정확히 하나의 기존 버킷이 "분할"해야하며, 일부 튜플이 업데이트 된 키 버킷으로 전송됩니다..

확장은 전경에서 발생하여 사용자 인서트의 실행 시간을 증가시킬 수 있습니다. 따라서 해시 토토 결과 행이 빠르게 증가하는 테이블에 적합하지 않을 수 있습니다.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면