이 섹션에서는 구현자에게 유용한 구현 세부 정보 및 기타 트릭을 다룹니다.SP-GiST알아두어야 할 연산자 클래스.
개별 리프 튜플과 내부 튜플은 단일 색인 페이지에 맞아야 합니다(기본적으로 8kB). 따라서 가변 길이 데이터 유형의 값을 인덱싱할 때 긴 값은 트리의 각 수준에 페이지에 맞을 만큼 짧은 접두사가 포함되고 마지막 리프 수준에도 페이지에 들어갈 만큼 짧은 접미사가 포함되는 기수 트리와 같은 방법을 통해서만 지원될 수 있습니다. 연산자 클래스는 설정해야 합니다.longValuesOK이 일이 발생하도록 준비할 준비가 되어 있는 경우에만 true입니다. 그렇지 않으면,SP-GiST코어는 너무 커서 색인 페이지에 맞지 않는 값을 색인화하라는 요청을 거부합니다.
마찬가지로, 내부 튜플이 색인 페이지에 맞을 정도로 너무 커지지 않는 것은 연산자 클래스의 책임입니다. 이는 하나의 내부 튜플에서 사용할 수 있는 하위 노드의 수와 접두사 값의 최대 크기를 제한합니다.
또 다른 제한은 내부 튜플의 노드가 리프 튜플 세트를 가리킬 때 해당 튜플이 모두 동일한 인덱스 페이지에 있어야 한다는 것입니다. (이는 검색을 줄이고 이러한 튜플을 함께 연결하는 링크의 공간을 절약하기 위한 디자인 결정입니다.) 리프 튜플 세트가 페이지에 비해 너무 커지면 분할이 수행되고 중간 내부 튜플이 삽입됩니다. 문제를 해결하기 위해 새로운 내부 튜플반드시리프 값 세트를 둘 이상의 스포츠 토토 베트맨 그룹으로 나눕니다. 연산자 클래스의 경우picksplit함수가 이를 수행하지 못했습니다.SP-GiST핵심은 다음에 설명된 특별 조치를 취합니다.섹션 66.4.3.
언제longValuesOK맞습니다. 연속적인 수준의SP-GiST트리는 내부 튜플의 접두어와 노드 레이블에 점점 더 많은 정보를 흡수하여 필요한 리프 데이터를 점점 더 작게 만들어 결국 페이지에 맞도록 만듭니다. 연산자 클래스의 버그로 인해 무한 삽입 루프가 발생하는 것을 방지하려면SP-GiST리프 데이텀이 10주기 이내에 더 작아지지 않으면 코어는 오류를 발생시킵니다.선택메소드 호출.
일부 트리 알고리즘은 각 내부 튜플에 대해 고정된 노드 세트를 사용합니다. 예를 들어, 쿼드 트리에는 항상 내부 튜플의 중심점 주위의 4개 사분면에 해당하는 정확히 4개의 노드가 있습니다. 이러한 경우 코드는 일반적으로 번호별로 노드와 함께 작동하며 명시적인 노드 레이블이 필요하지 않습니다. 노드 레이블을 억제하여 공간을 절약하려면,picksplit함수는 다음에 대해 NULL을 반환할 수 있습니다.스포츠 토토 베트맨 라벨배열, 그리고 마찬가지로선택함수는 다음에 대해 NULL을 반환할 수 있습니다.prefixNodeLabelsa 동안 배열spgSplitTuple액션. 결과적으로 다음과 같은 결과가 발생합니다.스포츠 토토 베트맨 라벨다음 호출 중에 NULL임선택그리고내부_일관성. 원칙적으로 노드 레이블은 일부 내부 튜플에 사용되고 동일한 인덱스의 다른 튜플에는 생략될 수 있습니다.
레이블이 지정되지 않은 노드가 있는 내부 튜플로 작업할 때 오류가 발생합니다.선택돌아오다spgAddNode, 이러한 경우에는 스포츠 토토 베트맨 집합이 수정되어야 하기 때문입니다.
그SP-GiST코어는 연산자 클래스의 결과를 재정의할 수 있습니다.picksplit언제 함수picksplit제공된 리프 값을 최소한 두 개의 노드 범주로 나누는 데 실패했습니다. 이런 일이 발생하면 각각 동일한 레이블(있는 경우)을 갖는 여러 노드로 새로운 내부 튜플이 생성됩니다.picksplit사용한 노드 하나에 부여되었으며 리프 값은 이러한 등가 노드 간에 무작위로 나뉩니다.allTheSame플래그는 내부 튜플에 설정되어 경고합니다.선택그리고내부_일관성튜플에 예상할 수 있는 스포츠 토토 베트맨 세트가 없는 함수입니다.
다음을 처리할 때allTheSame튜플, a선택결과spgMatchNode은 새 값이 동등한 스포츠 토토 베트맨에 할당될 수 있음을 의미하는 것으로 해석됩니다. 핵심 코드는 제공된 코드를 무시합니다스포츠 토토 베트맨N값을 설정하고 무작위로 노드 중 하나로 내려갑니다(트리의 균형을 유지하기 위해). 오류입니다.선택돌아오다spgAddNode, 그렇게 하면 스포츠 토토 베트맨가 모두 동일하지 않게 되기 때문입니다.spgSplitTuple삽입할 값이 기존 스포츠 토토 베트맨와 일치하지 않는 경우 조치를 사용해야 합니다.
다음을 처리할 때allTheSame튜플, 그내부_일관성함수는 모두 동일하므로 색인 검색을 계속하기 위한 대상으로 스포츠 토토 베트맨 전체를 반환하거나 전혀 반환하지 않아야 합니다. 여기에는 특수 사례 코드가 필요할 수도 있고 필요하지 않을 수도 있습니다.내부_일관성함수는 일반적으로 스포츠 토토 베트맨의 의미를 가정합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.