이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 11.12. 롤 토토 사용 검사버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8.8. 인덱스 토토 캔 검사

indexes inpostgresql유지 보수가 필요하지 않습니다 튜닝, 실제로 어떤 인덱스가 실제로 있는지 확인하는 것이 중요합니다. 실제 쿼리 워크로드에서 토토 캔됩니다. 인덱스 토토 캔법을 검사합니다 완료설명명령; 그것은 이 목적에 대한 적용은에 설명되어 있습니다.섹션 10.1.

일반적인 절차를 공식화하기가 어렵습니다 설정할 인덱스를 결정합니다. 여러 가지가 있습니다 전반적으로 예제에 표시된 전형적인 경우 이전 섹션. 많은 실험이있을 것입니다 대부분의 경우 필요합니다. 이 섹션의 나머지 부분은 몇 가지 팁을 제공합니다 그것을 위해.

  • 항상 실행분석첫 번째. 이것 명령은 다음의 분포에 대한 통계를 수집합니다 테이블의 값. 이 정보는 추측해야합니다 쿼리에 의해 반환 된 행의 수는 가능한 각 쿼리에 현실적인 비용을 할당하는 플래너 계획. 실제 통계가 없으면 일부 기본값 거의 부정확 한 것으로 가정합니다. 실행하지 않고 응용 프로그램의 인덱스 사용을 검사합니다분석따라서 잃어버린 것입니다 원인.

  • 실험에 실제 데이터를 토토 캔하십시오. 테스트 데이터 토토 캔 인덱스 설정이 필요한 인덱스를 알려줍니다. 테스트 데이터이지만 그게 전부입니다.

    비례 적으로 감소 된 데이터를 토토 캔하는 것은 특히 치명적입니다 세트. 10000 행 중 1000을 선택하는 동안 인덱스 후보자, 100 행 중 1 개를 선택하면 100 줄은 아마도 단일 디스크 페이지, 이길 수있는 계획이 없습니다. 순차적으로 1 디스크 페이지를 가져와.

    테스트 데이터를 구성 할 때 조심하십시오. 응용 프로그램이 생산 중이 아닌 경우 피할 수 없습니다 아직. 매우 유사하고 완전히 무작위 인 값 정렬 된 순서로 삽입 된 통계가 비뚤어집니다. 실제 데이터가 가질 분포.

  • 인덱스를 사용하지 않으면 테스트에 유용 할 수 있습니다. 그들의 사용을 강요하십시오. 회전 할 수있는 런타임 매개 변수가 있습니다 다양한 계획 유형 (에 설명 된Postgresql 7.3.21 관리자 안내서). 예를 들어, 순차적 스캔을 끄는 (enable_seqscan) 및 중첩 루프 조인 (enable_nestloop) 가장 기본적인 계획은 시스템이 다른 것을 사용하도록 강요합니다. 계획. 시스템이 여전히 순차적 스캔을 선택하는 경우 또는 중첩 루프 가입은 아마도 더 근본적인 일이있을 것입니다 예를 들어 인덱스가 사용되지 않은 이유에 대한 문제 (예 : 쿼리) 조건은 인덱스와 일치하지 않습니다. (어떤 종류의 쿼리가 가능합니다 이전에 설명 된 색인을 사용하십시오. 섹션.)

  • 인덱스 토토 캔을 강제로 토토 캔하면 인덱스를 토토 캔하는 경우 두 가지 가능성 : 시스템이 옳고 토토 캔합니다. 색인은 실제로 적절하지 않거나 쿼리 계획은 현실을 반영하지 않습니다. 시간이 있어야합니다 색인이 있거나없는 쿼리. 그만큼분석명령이 유용 할 수 있습니다 여기.

  • 비용 추정치가 잘못 되었다면 거기 다시 한번, 두 가지 가능성입니다. 총 비용은 계산됩니다 각 계획 노드 시간의 당 비용에서 계획 노드의 선택성 추정치. 계획의 비용 노드는 런타임 매개 변수로 조정할 수 있습니다 (사설 토토 사이트 PostgreSQL : 문서 : 7.3). 부정확 한 선택성 견적은 통계가 충분하지 않기 때문입니다. 그럴 수도 있습니다 통계 수집을 조정하여이를 도울 수 있습니다 매개 변수 ( 참조Alter Table참조).

    비용을 더 이상 조정하는 데 성공하지 않는 경우 적절한 경우 인덱스 강제에 의지해야 할 수도 있습니다. 명시 적으로 토토 캔합니다. 에도 연락 할 수도 있습니다.PostgreSQL개발자 문제를 조사하십시오.