인덱스는포스트그레SQL유지보수가 필요하지 않으며 조정을 수행하더라도 실제로 어떤 인덱스가 사용되는지 확인하는 것이 중요합니다. 실제 쿼리 워크로드에서 사용됩니다. 다음에 대한 인덱스 사용량 조사 개별 쿼리는설명명령; 이에 대한 적용 목적은 다음에 설명되어 있습니다.PostgreSQL : 문서 : 8.3 : 설명 토토 사이트. 에 대한 전반적인 통계를 수집하는 것도 가능합니다. 다음에 설명된 대로 실행 중인 서버의 인덱스 사용섹션 26.2.
다음에 대한 일반적인 절차를 공식화하는 것은 어렵습니다. 설정할 인덱스를 결정합니다. 여러 가지가 있습니다 예제 전체에 걸쳐 나타난 전형적인 사례 이전 섹션. 많은 실험이 있을 것이다. 대부분의 경우 필요합니다. 이 섹션의 나머지 부분에서는 몇 가지 팁을 제공합니다. 그러기 위해서.
항상 실행분석먼저. 이 명령은 수집합니다. 테이블의 값 분포에 대한 통계입니다. 이 정보는 행 수를 추측하는 데 필요합니다. 플래너가 할당하는 데 필요한 쿼리에 의해 반환됨 가능한 각 쿼리 계획에 대한 현실적인 비용. 부재시 실제 통계에서는 일부 기본값이 가정됩니다. 거의 정확하지 않을 것이 확실합니다. 검사 실행하지 않고 애플리케이션의 인덱스 사용분석따라서 손실된 원인입니다.
실험을 위해 실제 데이터를 사설 토토하십시오. 테스트 데이터 사설 토토 인덱스를 설정하면 필요한 인덱스가 무엇인지 알려줍니다. 테스트 데이터지만 그게 전부입니다.
매우 작은 테스트 데이터 세트를 사설 토토하는 것은 특히 치명적입니다. 100,000개의 행 중 1000개를 선택하는 것이 후보가 될 수 있습니다. 인덱스의 경우 100개 행 중 1개를 선택하는 것은 거의 불가능합니다. 왜냐하면 100개의 행이 아마도 단일 디스크에 들어갈 것이기 때문입니다. 페이지이며, 순차적으로 이길 수 있는 계획은 없습니다. 1개의 디스크 페이지를 가져오는 중입니다.
또한 테스트 데이터를 구성할 때 주의하십시오. 애플리케이션이 프로덕션 환경에서 사설 토토되지 않는 경우 불가피합니다. 아직. 매우 유사하거나 완전히 무작위인 값 또는 정렬된 순서로 삽입하면 통계가 왜곡됩니다. 실제 데이터의 분포입니다.
색인이 사용되지 않으면 다음을 테스트하는 데 유용할 수 있습니다. 강제로 사용합니다. 변경할 수 있는 런타임 매개변수가 있습니다. 다양한 계획 유형 해제(참조섹션 18.6.1). 예를 들어 순차 스캔을 끄는 경우 (enable_seqscan) 및 중첩 루프 조인(enable_nestloop), 이는 가장 기본적인 계획은 시스템이 다른 계획. 시스템이 여전히 순차 스캔을 선택하는 경우 또는 중첩 루프 조인이라면 아마도 더 근본적인 방법이 있을 것입니다. 인덱스를 사용하지 않는 이유 예를 들어 쿼리 조건이 인덱스와 일치하지 않습니다. (어떤 종류의 쿼리를 할 수 있나요? 이전에 설명한 인덱스의 종류를 사용하십시오. 섹션.)
인덱스 사용을 강제하여 인덱스를 사용하는 경우 다음이 있습니다. 두 가지 가능성: 시스템이 옳고 다음 중 하나를 사용합니다. 지수가 실제로 적절하지 않거나 쿼리 계획이 현실을 반영하지 않습니다. 그러니 시간을 내야 해 인덱스가 있거나 없는 쿼리.분석 설명명령이 유용할 수 있습니다 여기.
비용 추정이 잘못된 것으로 밝혀지면 다시 말하지만 두 가지 가능성이 있습니다. 총 비용이 계산됩니다. 각 계획 노드의 행당 비용에 계획 노드의 선택성 추정. 예상 비용 계획 노드의 경우 런타임 매개변수를 통해 조정할 수 있습니다. (설명됨섹션 18.6.2). 부정확한 선택성 추정은 다음과 같은 이유로 인해 발생합니다. 통계가 부족합니다. 이 점을 개선하는 것이 가능할 수도 있습니다 통계 수집 매개변수를 조정하여(참조PostgreSQL : 문서 : 8.3 : 메이저 토토 사이트 Table).
비용을 더 많이 조정하는데 성공하지 못한 경우 적절하다면 인덱스를 강제로 사용해야 할 수도 있습니다. 명시적으로 사용법. 다음 담당자에게 문의하실 수도 있습니다.PostgreSQL개발자 문제를 조사해 보세요.