테이블 채우기 비율과 인덱스 채우기 비율의 차이점


16

Postgres에서는 인덱스뿐만 아니라 테이블에 fillfactor를 설정할 수 있습니다. 차이점은 무엇입니까? 둘 중 하나의 값을 결정하는 방법. 사용 사례는 무엇입니까?

공간 인덱스에서 공간 관계를 클러스터하려고합니다. 이 기록에는 2 백만 건의 기록이 있습니다. 매일 새 레코드가 거의 생성되지 않지만 레코드는 항상 업데이트됩니다.

유스 케이스는 공간 범위 쿼리입니다. 테이블 채우기 비율 및 / 또는 인덱스 채우기 비율에 적합한 값은 무엇입니까?

답변:


12

(가)에서 TABLE 매뉴얼 페이지를 CREATE (강조는 추가) :

테이블 의 채우기 비율은 10에서 100 사이의 백분율입니다. 100 (완전 포장)이 기본값입니다. 더 작은 fillfactor가 지정되면 INSERT 조작은 표 페이지 만 표시된 백분율로 묶습니다. 각 페이지의 나머지 공간은 해당 페이지의 행을 업데이트하기 위해 예약되어 있습니다. 이렇게하면 UPDATE는 업데이트 된 행의 사본을 원본과 동일한 페이지에 배치 할 수 있으므로 다른 페이지에 배치하는 것보다 효율적입니다. 항목이 업데이트되지 않은 테이블의 경우 완전한 패킹이 최선의 선택이지만 크게 업데이트 된 테이블에서는 작은 채우기 비율이 적합합니다.

(가)에서 INDEX 매뉴얼 페이지를 CREATE (강조는 추가) :

인덱스 의 채우기 비율은 인덱스 방법이 인덱스 페이지를 압축하려고 시도하는 정도를 결정하는 백분율입니다. B- 트리의 경우, 리프 페이지는 초기 인덱스 작성 중 및 오른쪽에서 인덱스를 확장 할 때 (가장 큰 키 값)이 백분율로 채워집니다. 이후에 페이지가 완전히 가득 차면 분할되어 인덱스 효율성이 점차 저하됩니다.B- 트리는 기본 채우기 비율 90을 사용하지만 10에서 100 사이의 값을 선택할 수 있습니다. 테이블이 정적 인 경우 fillfactor 100은 인덱스의 실제 크기를 최소화하는 것이 가장 좋지만, 많이 업데이트 된 테이블의 경우 더 작은 fillfactor가 페이지 분할의 필요성을 최소화하는 것이 좋습니다. 다른 인덱스 메소드는 fillfactor를 사용하지만 거의 비슷한 방식으로 사용합니다. 기본 fillfactor는 메소드마다 다릅니다.


1
견적의 출처를 언급하는 것이 일반적입니다. 알아 내기 쉬운 경우에도 마찬가지입니다.
Erwin Brandstetter

그래, 물론) 가끔 잊어 버려요

잔소리 좀 더 미안해 특정 버전을 다루지 않는 한 현재 버전의 설명서에 연결하십시오. 편집했습니다. 그것에 대한 자세한 내용은 여기를 참조하십시오 .
Erwin Brandstetter

링크가 거꾸로되어 있습니다.
Dave Johansen

2
Re : "테이블이 정적 인 경우 fillfactor 100은 인덱스의 물리적 크기를 최소화하는 것이 가장 좋지만, 많이 업데이트 된 테이블의 경우 더 작은 fillfactor가 페이지 분할의 필요성을 최소화하는 것이 좋습니다." "강하게 업데이트 된 테이블"의 컨텍스트를 이해하려고 시도하는 경우-행 값이 많이 업데이트 된 테이블을 의미합니까, 아니면 자주 삽입 및 / 또는 삭제되는 행이있는 테이블을 포함 할 수 있습니까? 행 값을 거의 변경하지 않지만 광범위한 삽입 및 삭제로 테이블이 주 (키) 인덱스에서 낮은 채우기 비율로 인해 이점을 얻을 수 있는지 알고 싶었습니다.
Reinsbrain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.