indexis inpostgresql유지 보수 또는 튜닝이 필요하지 않으면 실제 쿼리 워크로드에서 실제로 사용되는 와이즈 토토를 확인하는 것이 여전히 중요합니다. 개별 쿼리에 대한 와이즈 토토 사용을 검사하는 것은에서 수행됩니다.설명명령; 이 목적을위한 적용은에 설명되어 있습니다.PostgreSQL : 문서 : 12 : 14.1. 설명 토토 사이트 순위. 에 설명 된대로 실행중인 서버에서 인덱스 사용에 대한 전체 통계를 수집 할 수도 있습니다.토토 사이트 PostgreSQL : 문서 : 12 : 27.2. 통계 수집가.
생성 할 와이즈 토토를 결정하기위한 일반적인 절차를 공식화하기가 어렵습니다. 이전 섹션의 예제에 표시된 여러 가지 일반적인 사례가 있습니다. 많은 실험이 종종 필요합니다. 이 섹션의 나머지 부분은 다음과 같은 팁을 제공합니다.
항상 실행분석첫 번째. 이 명령은 표에서 값의 분포에 대한 통계를 수집합니다. 이 정보는 쿼리에 의해 반환 된 행 수를 추정해야하며, 이는 플래너가 가능한 각 가능한 쿼리 계획에 현실적인 비용을 할당하기 위해 필요합니다. 실제 통계가 없으면 일부 기본값이 가정되며 거의 부정확 할 것입니다. 실행하지 않고 응용 프로그램의 와이즈 토토 사용을 검사합니다분석
따라서 잃어버린 원인입니다. 보다섹션 24.1.3and섹션 24.1.6자세한 내용은
실험에 실제 데이터를 사용하십시오. 와이즈 토토 설정을 위해 테스트 데이터를 사용하면 테스트 데이터에 필요한 색인이 알 수 있지만 그게 전부입니다.
매우 작은 테스트 데이터 세트를 사용하는 것은 특히 치명적입니다. 10000 행 중 1000 행을 선택하는 것은 와이즈 토토 후보가 될 수 있지만 100 행 중 1 개를 선택하는 것은 거의 없을 것입니다. 100 행은 단일 디스크 페이지에 적합하고 1 개의 디스크 페이지를 순차적으로 가져올 수있는 계획이 없기 때문입니다..
또한 테스트 데이터를 구성 할 때 조심해야합니다. 이는 응용 프로그램이 아직 생산되지 않을 때 피할 수없는 경우가 종종 있습니다. 매우 유사하거나 완전히 무작위로 또는 정렬 된 순서로 삽입되는 값은 실제 데이터가 가진 분포에서 통계를 기울입니다.
와이즈 토토가 사용되지 않으면 사용을 강제로 사용하는 데 유용 할 수 있습니다. 다양한 계획 유형을 끄는 런타임 매개 변수가 있습니다 (섹션 19.7.1). 예를 들어, 순차적 스캔을 끄는 (enable_seqscan
) 및 중첩 루프 조인 (enable_nestloop
14376_14753
와이즈 토토 사용을 강제로 사용하면 와이즈 토토를 사용하는 경우 두 가지 가능성이 있습니다. 시스템이 옳고 와이즈 토토 사용이 실제로 적절하지 않거나 쿼리 계획의 비용 추정치가 현실을 반영하지 않습니다. 따라서 와이즈 토토 유무에 관계없이 쿼리에 시간이 걸립니다. 그만큼분석 설명
명령은 여기에서 유용 할 수 있습니다.
비용 추정치가 잘못 되었다면 다시 두 가지 가능성이 있습니다. 총 비용은 각 계획 노드의 당 비용으로 계산됩니다. 계획 노드에 대한 추정 비용은 런타임 매개 변수를 통해 조정할 수 있습니다 (섹션 19.7.2). 부정확 한 선택성 추정치는 통계가 충분하지 않기 때문입니다. 통계 수집 매개 변수를 조정하여이를 개선 할 수 있습니다 (참조토토 꽁 머니 PostgreSQL).
비용을 더 적절하게 조정하는 데 성공하지 못하면 와이즈 토토 사용을 명시 적으로 강요해야 할 수도 있습니다. 당신은 또한에 연락 할 수도 있습니다PostgreSQL이 문제를 조사 할 개발자.