이전 섹션에서 보았듯이 쿼리 플래너는 다음을 수행해야 합니다. 쿼리를 통해 검색된 행 수를 추정합니다. 좋은 쿼리 계획 선택. 이 섹션에서는 간략한 개요를 제공합니다. 시스템이 이러한 추정에 사용하는 통계에 따라.
통계의 한 구성요소는 총 항목 수입니다 각 테이블과 인덱스의 디스크 블록 수 각 테이블과 인덱스가 차지합니다. 이 정보는 테이블pg_class, 열에서reltuples그리고relpages. 쿼리를 통해 살펴볼 수 있습니다. 이것과 비슷합니다:
pg_class에서 relname, relkind, reltules, relpages를 선택하세요. WHERE relname LIKE 'tenk1%';
이름 | 친척 | 렐튜플스 | 다시 페이지
---------+---------+------------+----------
텐크1 | r | 10000 | 358
tenk1_hundred | 나 | 10000 | 30
tenk1_thous_tenthous | 나 | 10000 | 30
tenk1_unique1 | 나 | 10000 | 30
tenk1_unique2 | 나 | 10000 | 30
(5행)
여기에서 볼 수 있습니다.tenk1인덱스와 마찬가지로 10000개의 행을 포함하지만 인덱스는 (당연히) 테이블보다 훨씬 작습니다.
효율성상의 이유로,reltuples그리고relpages업데이트되지 않았습니다 즉석에서 실행되므로 일반적으로 다소 오래된 내용이 포함되어 있습니다. 가치. 다음으로 업데이트됩니다.진공, 분석및 다음과 같은 몇 가지 DDL 명령색인 생성. 독립형분석, 그건의 일부가 아닌 것입니다진공, 대략적인 값을 생성합니다.reltuples매번 읽지 않기 때문에 값 테이블의 행. 플래너는 찾은 값을 확장합니다.pg_class현재와 일치하도록 실제 테이블 크기에 따라 더 가까운 크기를 얻습니다. 근사치.
대부분의 쿼리는 테이블 행의 일부만 검색합니다. 가지고 있기 때문에어디절은 다음과 같습니다 검사할 행을 제한합니다. 기획자는 이렇게 해야 한다. 의 추정치선택성의어디절, 즉, 의 각 조건과 일치하는 행어디에서절. 이 작업에 사용되는 정보 에 저장됩니다.PostgreSQL :시스템 카탈로그. 의 항목pg_statistic다음에 의해 업데이트됩니다.분석그리고진공 분석명령이며, 다음 경우에도 항상 근사치입니다. 새로 업데이트되었습니다.
보기보다는pg_statistic직접적으로 그 모습을 보는 것이 더 좋습니다pg_stats토토 핫를 조사할 때 수동으로.pg_stats다음과 같이 설계되었습니다. 더 쉽게 읽을 수 있습니다. 게다가pg_stats모두가 읽을 수 있는 반면pg_statistic수퍼유저만 읽을 수 있습니다. (이것은 권한이 없는 토토 핫자가 무엇인가를 배우는 것을 방지합니다. 통계에서 다른 사람의 테이블 내용.pg_stats보기가 표시되도록 제한되었습니다. 현재 사용자가 읽을 수 있는 테이블에 대한 행만.) 예를 들어 다음과 같이 할 수 있습니다.
pg_stats에서 attname, n_distinct, Most_common_vals 선택 WHERE tablename = 'road'; 이름 | n_distinct | 가장_공통_발 ----------------------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 이름 | -0.467008 | "I- 580 램프","I- 880 램프","Sp 철도","I- 580","I- 680 램프","I- 80 램프","14th St","5th St","Mission Blvd","I- 880" 경로 | 20 | "[(-122.089,37.71),(-122.0886,37.711)]"
pg_stats자세한 내용은윈 토토 : 문서 : 8.1 : PG_STATS.
저장된 정보의 양pg_statistic, 특히 최대 개수 의 항목 수most_common_vals그리고히스토그램_바운드각각에 대한 배열 열은를 토토 핫하여 열별로 설정할 수 있습니다.테이블 세트 토토 핫 변경명령 또는 전역적으로 설정하여default_statistics_target구성 변수. 현재 기본 제한은 10입니다. 항목. 한도를 높이면 더 정확한 플래너가 가능해질 수 있습니다. 특히 불규칙한 기둥의 경우 추정치가 작성됩니다. 더 많은 공간을 소비하는 대가로 데이터 배포pg_statistic그리고 약간 더 많은 시간 추정치를 계산합니다. 반대로 하한선은 다음과 같을 수 있습니다. 단순한 데이터 분포를 갖는 열에 적합합니다.