포스트그레SQL완전히 충돌 복구가 가능한 영구 디스크 내 스포츠 토토 베트맨 인덱스 구현이 포함되어 있습니다. 잘 정의된 선형 순서가 없는 데이터 유형을 포함하여 모든 데이터 유형은 스포츠 토토 베트맨 인덱스로 인덱싱될 수 있습니다. 스포츠 토토 베트맨 인덱스는 인덱싱되는 데이터의 스포츠 토토 베트맨 값만 저장하므로 인덱싱되는 데이터 열의 크기에는 제한이 없습니다.
해시 인덱스는 단일 열 인덱스만 지원하며 고유성 검사를 허용하지 않습니다.
해시 인덱스는 다음만 지원합니다.=연산자이므로 범위 연산을 지정하는 WHERE 절은 스포츠 토토 베트맨 인덱스를 활용할 수 없습니다.
각 스포츠 토토 베트맨 인덱스 튜플은 실제 열 값이 아닌 4바이트 스포츠 토토 베트맨 값만 저장합니다. 결과적으로 UUID, URL 등과 같은 긴 데이터 항목을 인덱싱할 때 스포츠 토토 베트맨 인덱스는 B-트리보다 훨씬 작을 수 있습니다. 또한 열 값이 없으면 모든 스포츠 토토 베트맨 인덱스 스캔이 손실됩니다. 스포츠 토토 베트맨 인덱스는 비트맵 인덱스 스캔 및 역방향 스캔에 참여할 수 있습니다.
스포츠 토토 베트맨 인덱스는 더 큰 테이블에서 동일성 스캔을 사용하는 SELECT 및 UPDATE가 많은 작업 부하에 가장 최적화되어 있습니다. B-트리 인덱스에서 검색은 리프 페이지를 찾을 때까지 트리를 따라 내려가야 합니다. 수백만 개의 행이 있는 테이블에서 이러한 하강은 데이터에 대한 액세스 시간을 늘릴 수 있습니다. 스포츠 토토 베트맨 인덱스의 리프 페이지에 해당하는 페이지를 버킷 페이지라고 합니다. 이와 대조적으로 스포츠 토토 베트맨 인덱스를 사용하면 버킷 페이지에 직접 액세스할 수 있으므로 더 큰 테이블에서 인덱스 액세스 시간이 줄어들 가능성이 있습니다. 이러한 '논리적 I/O' 감소는 shared_buffers/RAM보다 큰 인덱스/데이터에서 더욱 두드러집니다.
스포츠 토토 베트맨 인덱스는 스포츠 토토 베트맨 값의 고르지 못한 분포에 대처하도록 설계되었습니다. 스포츠 토토 베트맨 값이 고르게 분포되어 있으면 버킷 페이지에 대한 직접 액세스가 잘 작동합니다. 삽입으로 인해 버킷 페이지가 가득 차면 추가 오버플로 페이지가 해당 특정 버킷 페이지에 연결되어 해당 스포츠 토토 베트맨 값과 일치하는 인덱스 튜플에 대한 저장소가 로컬로 확장됩니다. 쿼리 중에 스포츠 토토 베트맨 버킷을 스캔할 때 오버플로 페이지를 모두 스캔해야 합니다. 따라서 불균형 스포츠 토토 베트맨 인덱스는 실제로 일부 데이터의 경우 필요한 블록 액세스 수 측면에서 B-트리보다 나쁠 수 있습니다.
오버플로 사례의 결과로 스포츠 토토 베트맨 인덱스는 고유하고 거의 고유한 데이터 또는 스포츠 토토 베트맨 버킷당 행 수가 적은 데이터에 가장 적합하다고 말할 수 있습니다. 문제를 방지할 수 있는 한 가지 방법은 부분 인덱스 조건을 사용하여 인덱스에서 고유하지 않은 값을 제외하는 것이지만 이는 많은 경우에 적합하지 않을 수 있습니다.
B-트리와 마찬가지로 스포츠 토토 베트맨 인덱스는 간단한 인덱스 튜플 삭제를 수행합니다. 이는 삭제해도 안전한 것으로 알려진 인덱스 튜플(항목 식별자의 LP_DEAD 비트가 이미 설정된 항목)을 삭제하는 지연된 유지 관리 작업입니다. 삽입 시 페이지에 사용 가능한 공간이 없다고 판단되면 데드 인덱스 튜플을 제거하여 새 오버플로 페이지를 생성하지 않으려고 합니다. 해당 시점에 페이지가 고정되어 있으면 제거가 불가능합니다. VACUUM 중에도 데드 인덱스 포인터 삭제가 발생합니다.
가능하다면 VACUUM은 또한 가능한 적은 수의 오버플로 페이지에 인덱스 튜플을 압축하여 오버플로 체인을 최소화하려고 시도합니다. 오버플로 페이지가 비어 있으면 오버플로 페이지를 다른 버킷에서 재사용하기 위해 재활용할 수 있지만 운영 체제에는 반환되지 않습니다. 현재 REINDEX로 재구축하는 것 외에는 해시 인덱스를 축소할 수 있는 방법이 없습니다. 버킷 수를 줄일 수 있는 조항도 없습니다.
스포츠 토토 베트맨 인덱스는 인덱스된 행 수가 증가함에 따라 버킷 페이지 수를 늘릴 수 있습니다. 스포츠 토토 베트맨 키-버킷 번호 매핑은 인덱스가 점진적으로 확장될 수 있도록 선택됩니다. 새 버킷이 인덱스에 추가되면 정확히 하나의 기존 버킷을 "분할"해야 하며 업데이트된 키-버킷 번호 매핑에 따라 일부 튜플이 새 버킷으로 전송됩니다.
확장이 전경에서 발생하므로 사용자 삽입 실행 시간이 늘어날 수 있습니다. 따라서 행 수가 급격히 증가하는 테이블에는 스포츠 토토 베트맨 인덱스가 적합하지 않을 수 있습니다.
해시 인덱스에는 네 가지 종류의 페이지가 있습니다: 정적으로 할당된 제어 정보를 포함하는 메타 페이지(페이지 0); 기본 버킷 페이지 오버플로 페이지; 해제되어 재사용 가능한 오버플로 페이지를 추적하는 비트맵 페이지도 있습니다. 주소 지정을 위해 비트맵 페이지는 오버플로 페이지의 하위 집합으로 간주됩니다.
색인 스캔과 튜플 삽입 모두 주어진 튜플이 위치해야 하는 버킷을 찾아야 합니다. 이를 위해서는 메타페이지의 버킷 수, 하이마스크, 로우마스크가 필요합니다. 그러나 이러한 모든 작업에 대해 메타페이지를 잠그고 고정해야 하는 것은 성능상의 이유로 바람직하지 않습니다. 대신 각 백엔드의 relcache 항목에 메타페이지의 캐시된 복사본을 유지합니다. 마지막 캐시 새로 고침 이후 대상 버킷이 분할되지 않은 한 올바른 버킷 매핑이 생성됩니다.
기본 버킷 페이지와 오버플로 페이지는 특정 인덱스에 버킷 수에 비해 더 많거나 적은 오버플로 페이지가 필요할 수 있으므로 독립적으로 할당됩니다. 해시 코드는 흥미로운 주소 지정 규칙 세트를 사용하여 기본 버킷 페이지가 생성된 후 이동할 필요 없이 다양한 수의 오버플로 페이지를 지원합니다.
인덱싱된 테이블의 각 행은 스포츠 토토 베트맨 인덱스의 단일 인덱스 튜플로 표시됩니다. 스포츠 토토 베트맨 인덱스 튜플은 버킷 페이지에 저장되며, 존재하는 경우 오버플로 페이지에 저장됩니다. 스포츠 토토 베트맨 코드로 정렬된 하나의 색인 페이지에 색인 항목을 유지하여 색인 페이지 내에서 이진 검색을 사용할 수 있도록 하여 검색 속도를 높입니다. 그러나 버킷의 여러 인덱스 페이지에 걸쳐 스포츠 토토 베트맨 코드의 상대적 순서에 대한 가정은 *아닙니다*.
스포츠 토토 베트맨 인덱스를 확장하기 위한 버킷 분할 알고리즘은 너무 복잡하여 여기서 언급할 가치가 없지만 더 자세히 설명되어 있습니다.src/백엔드/액세스/스포츠 토토 베트맨/README. 분할 알고리즘은 충돌로부터 안전하며 성공적으로 완료되지 않으면 다시 시작할 수 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.