브린블록 범위 지수를 나타냅니다.브린은 특정 열이 테이블 내의 물리적 위치와 자연스러운 상관 관계를 갖는 매우 큰 테이블을 처리하도록 설계되었습니다. 갑블록 범위은 테이블에서 물리적으로 인접한 페이지 그룹입니다. 각 블록 범위에 대해 일부 요약 정보가 인덱스에 저장됩니다. 예를 들어, 상점의 판매 주문을 저장하는 테이블에는 각 주문이 접수된 날짜 열이 있을 수 있으며 대부분의 경우 이전 주문에 대한 항목도 테이블의 앞부분에 표시됩니다. 우편번호 열을 저장하는 테이블에는 도시의 모든 코드가 자연스럽게 그룹화되어 있을 수 있습니다.
브린색인은 일반 비트맵 색인 스캔을 통해 쿼리를 충족할 수 있으며 색인에 저장된 요약 정보가 다음과 같은 경우 각 범위 내의 모든 페이지에 있는 모든 튜플을 반환합니다.일관적인질의 조건으로. 쿼리 실행기는 이러한 튜플을 다시 확인하고 쿼리 조건과 일치하지 않는 튜플을 삭제하는 일을 담당합니다. 즉, 이러한 토토 핫는 손실이 있습니다. 왜냐하면브린토토 핫는 매우 작습니다. 토토 핫를 스캔하면 순차 스캔에 비해 오버헤드가 거의 추가되지 않지만 일치하는 튜플을 포함하지 않는 것으로 알려진 테이블의 큰 부분을 스캔하지 않을 수 있습니다.
a의 특정 데이터브린인덱스가 저장할 수 있는 특정 쿼리뿐만 아니라 인덱스가 충족할 수 있는 특정 쿼리는 인덱스의 각 열에 대해 선택된 연산자 클래스에 따라 달라집니다. 선형 정렬 순서를 갖는 데이터 유형에는 각 블록 범위 내의 최소값과 최대값을 저장하는 연산자 클래스가 있을 수 있습니다. 기하학적 유형은 블록 범위의 모든 객체에 대한 경계 상자를 저장할 수 있습니다.
블록 범위의 크기는 인덱스 생성 시간에 다음과 같이 결정됩니다.pages_per_range저장 매개변수. 색인 항목 수는 페이지의 관계 크기를 선택한 값으로 나눈 값과 같습니다.pages_per_range. 따라서 숫자가 작을수록 토토 핫는 더 커지지만(더 많은 토토 핫 항목을 저장해야 하기 때문에) 동시에 저장된 요약 데이터는 더 정확할 수 있으며 토토 핫 스캔 중에 더 많은 데이터 블록을 건너뛸 수 있습니다.
생성 시 기존의 모든 힙 페이지가 검색되고 끝에 불완전할 수 있는 범위를 포함하여 각 범위에 대해 요약 인덱스 튜플이 생성됩니다. 새 페이지가 데이터로 채워지면 이미 요약된 페이지 범위로 인해 요약 정보가 새 튜플의 데이터로 업데이트됩니다. 마지막 요약된 범위에 속하지 않는 새 페이지가 생성되면 해당 범위는 자동으로 요약 튜플을 획득하지 않습니다. 해당 튜플은 나중에 요약 실행이 호출되어 초기 요약이 생성될 때까지 요약되지 않은 상태로 유지됩니다. 이 프로세스는 다음을 사용하여 수동으로 호출할 수 있습니다.brin_summarize_range(regclass, bigint)또는brin_summarize_new_values(regclass)함수; 다음과 같은 경우 자동으로진공테이블을 처리합니다. 또는 삽입이 발생할 때 autovacuum에 의해 실행되는 자동 요약에 의해 수행됩니다. (이 마지막 트리거는 기본적으로 비활성화되어 있으며 다음을 통해 활성화할 수 있습니다.자동 요약매개변수.) 반대로 범위는 다음을 사용하여 요약 해제할 수 있습니다.brin_desummarize_range(regclass, bigint)함수는 기존 값이 변경되어 토토 핫 튜플이 더 이상 좋은 표현이 아닐 때 유용합니다.
자동 요약이 활성화되면 페이지 범위가 채워질 때마다 요청이 autovacuum으로 전송되어 해당 범위에 대한 대상 요약을 실행하고 동일한 데이터베이스에서 다음 작업자 실행이 끝날 때 이행됩니다. 요청 큐가 가득 차면 요청이 기록되지 않고 서버 로그에 메시지가 전송됩니다.
로그: "brin_wi_idx" 페이지 128 토토 핫에 대한 BRIN 범위 요약 요청이 기록되지 않았습니다
이런 일이 발생하면 테이블의 다음 정기 진공 중에 범위가 정상적으로 요약됩니다.