이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다배트맨 토토 사이트 추천 _버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

10.2. 플래너가 사용하는 배트맨 토토

이전 섹션에서 본 것처럼 쿼리 플래너는 쿼리로 검색된 행 수를 추정하여 만들기 위해 쿼리 계획의 좋은 선택. 이 섹션은 빠른 모양을 제공합니다 시스템이 이러한 추정치에 사용하는 통계에서.

배트맨 토토의 한 구성 요소는 총 항목 수입니다. 각 테이블과 인덱스 및 디스크 블록 수에 각 테이블과 색인으로 점유됩니다. 이 정보는 보관됩니다pg_class'sreltuplesandRelpages열. 우리는 그것을 볼 수 있습니다 이것과 유사한 쿼리 :

regression =# pg_class의 Relname, Relkind, Reltuples, Relpages를 선택하십시오
회귀-# 여기서 relname과 같은 'tenk1%';
    Relname | Relkind | reltuples | 재선
---------------+---------+-----------+----------
 Tenk1 | r |     10000 |      233
 Tenk1_hundred | i |     10000 |       30
 Tenk1_unique1 | i |     10000 |       30
 Tenk1_unique2 | i |     10000 |       30
(4 줄)

여기서 볼 수 있습니다Tenk1인덱스와 마찬가지로 10000 행이 포함되어 있지만 인덱스는 (당연히) 테이블보다 훨씬 작습니다.

효율성 이유,ReltuplesandRelpages업데이트되지 않았습니다 날개가 있으므로 일반적으로 대략적인 값 만 포함합니다 (플래너의 목적에 충분합니다). 그들은입니다 더미 값 (현재 1000 및 10 테이블이 생성 될 때 각각). 그들은 업데이트됩니다 특정 명령, 현재진공, 분석생성 색인. 독립형분석, 그 의 일부가 아닙니다진공, an 근사치를 내다Reltuples그 이후로 가치 테이블의 모든 행을 읽지는 않습니다.

대부분의 쿼리는 테이블에서 행의 일부만 검색합니다. 때문에여기서클로즈 검사 할 행을 제한합니다. 따라서 플래너는 만들어야합니다 의 추정치선택성of여기서클로즈, 즉, 분수 의 각 조항과 일치하는 행여기서조건. 이 작업에 배트맨 토토 된 정보는에 저장됩니다.PG_STATISTIC시스템 카탈로그. 항목 안에PG_STATISTIC분석진공 분석명령, 언제에도 근사치입니다 새로 업데이트되었습니다.

보지 않고PG_STATISTIC직접, 그 견해를 보는 것이 좋습니다PG_STATS배트맨 토토를 검사 할 때 수동으로.PG_STATS더 쉽게 읽을 수 있습니다. 뿐만 아니라,PG_STATS모두 읽을 수 있지만PG_STATISTIC는 슈퍼 유저 만 읽을 수 있습니다. (이것은 비전없는 사용자가 무언가를 배우지 못하게합니다 배트맨 토토에서 다른 사람들의 테이블의 내용. 그만큼PG_STATS보기가 표시되도록 제한됩니다 현재 배트맨 토토자가 읽을 수있는 테이블에 대한 행만.) 예를 들어, 우리는 할 수 있습니다 :

regression =# attname, n_distinct, most_common_vals pg_stats에서 tabename = 'road';
 ATTNAME | n_distinct |                                                                                                                                                                                  대부분의 _common_vals                                                                                                                                                                                   
---------+------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 이름 |  -0.467008 |  "I-580 Ramp", "I-880 Ramp", "SP Railroad", "I-580", "I-680 Ramp", "I-80 Ramp", "14th St", "5th St", "Mission Blvd", "I-880"
 thepath |         20 |  "[(-122.089,37.71), (-122.0886,37.711)]"

테이블 10-1존재하는 열을 표시PG_STATS.

표 10-1.PG_STATS

이름 타입 설명
TableName 이름 열이 포함 된 테이블 이름
attname 이름 이 행에 의해 설명 된 열
null_frac Real null 인 열의 항목 분수
avg_width 정수 열 항목의 바이트의 평균 너비
n_distinct Real 0보다 크면 추정 수입니다 열에서 뚜렷한 값. 0보다 적은 경우 별개의 값의 수의 음수는 행의 수. (부정 형태는분석그 수를 믿습니다 테이블이 커짐에 따라 뚜렷한 값이 증가 할 가능성이 높습니다. 긍정적 인 형태는 열에가있는 것처럼 보일 때 배트맨 토토됩니다. 가능한 값의 수정 된 수.) 예를 들어 -1 뚜렷한 수가있는 고유 한 열을 나타냅니다. 값은 행의 수와 동일합니다.
most_common_vals 텍스트 [] 열에서 가장 일반적인 값 목록. (값이 어떤 것보다 더 흔하지 않은 경우 생략 기타.)
most_common_freqs Real [] 가장 일반적인 값의 주파수 목록, 즉, 각각의 발생 수를 총으로 나눈 횟수 행의 수.
histogram_bounds 텍스트 [] 열의 값을 대략 동등한 인구 그룹. 그만큼most_common_vals, 존재한다면, 그렇습니다 히스토그램 계산에서 생략되었습니다. (생략 된 경우 열 데이터 유형은가 없습니다.<운영자 또는most_common_vals전체 인구.)
상관 관계 Real 물리적 행 순서 사이의 통계적 상관 관계 및 열 값의 논리 순서. 이것은 범위입니다 -1에서 +1. 값이 -1 또는 +1에 가까운 경우 인덱스 열의 스캔은 무작위 액세스 감소로 인해 0에 가까운 경우 디스크에. (열 데이터 유형이없는 경우 생략<운영자)

most_common_valsandhistogram_bounds배열을 설정할 수 있습니다 Column-by-Column 기준을 배트맨 토토여ALTER 테이블 배트맨 토토 설정명령. 기본 제한은 현재 10입니다 항목. 한도를 높이면보다 정확한 플래너가 가능할 수 있습니다 특히 불규칙한 열에 대해 추정 할 수 있습니다 더 많은 공간을 소비하는 가격에 데이터 분포PG_STATISTIC약간 더 많은 시간 추정치를 계산합니다. 반대로, 하한이있을 수 있습니다 간단한 데이터 배포가있는 열에 적합합니다.