이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.토토 사이트 추천 _버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

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

이전 섹션에서 본 것처럼 쿼리 플래너는 다음을 수행해야 합니다. 쿼리를 통해 검색된 행 수를 추정합니다. 좋은 쿼리 계획 선택. 이 섹션에서는 간략한 개요를 제공합니다. 시스템이 이러한 추정에 사용하는 통계에 따라.

통계의 한 구성요소는 총 항목 수입니다 각 테이블과 인덱스의 디스크 블록 수 각 테이블과 인덱스가 차지합니다. 이 정보는 다음 위치에 보관됩니다.pg_class'sreltuples그리고relpages열. 우리는 그것을 볼 수 있습니다 이와 유사한 쿼리:

regression=# pg_class에서 relname, relkind, reltules, relpages 선택
회귀-# WHERE relname LIKE 'tenk1%';
    이름 | 친척 | 렐튜플스 | 다시 페이지
---------------+---------+------------+----------
 텐크1 | r |     10000 |      233
 tenk1_hundred | 나 |     10000 |       30
 tenk1_unique1 | 나 |     10000 |       30
 tenk1_unique2 | 나 |     10000 |       30
(4행)

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

효율성상의 이유로,reltuples그리고relpages업데이트되지 않았습니다. 즉석에서 이루어지므로 일반적으로 대략적인 값만 포함됩니다. (기획자의 목적에 충분합니다). 그들은 더미 값으로 초기화됨(현재 1000 및 10 각각) 테이블이 생성될 때. 그들은 다음에 의해 업데이트됩니다. 현재 특정 명령진공, 분석만들기 인덱스. 독립형분석그건 의 일부가 아닙니다.진공, 생성 대략적인reltuples이후의 가치 테이블의 모든 행을 읽지는 않습니다.

대부분의 쿼리는 테이블 행의 일부만 검색합니다. 가지고 있기 때문에어디절 검사할 행을 제한합니다. 기획자는 이렇게 해야 한다. 의 추정치선택성어디절, 즉 의 각 절과 일치하는 행어디조건. 이 작업에 사용되는 정보는pg_statistic시스템 카탈로그. 항목 에서pg_statistic업데이트 대상:분석그리고진공 분석명령이며, 다음 경우에도 항상 근사치입니다. 새로 업데이트되었습니다.

보기보다는pg_statistic직접적으로 그 모습을 보는 것이 더 좋습니다pg_stats배트맨 토토를 조사할 때 수동으로.pg_stats다음과 같이 설계되었습니다. 더 쉽게 읽을 수 있습니다. 게다가pg_stats모두가 읽을 수 있는 반면pg_statistic수퍼유저만 읽을 수 있습니다. (이것은 권한이 없는 사용자가 무엇인가를 배우는 것을 방지합니다. 배트맨 토토에서 다른 사람의 테이블 내용.pg_stats보기가 표시되도록 제한되었습니다. 현재 사용자가 읽을 수 있는 테이블에 대한 행만.) 예를 들어 다음과 같이 할 수 있습니다.

regression=# SELECT attname, n_distinct, Most_common_vals FROM pg_stats 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)]"

테이블 10-1다음에 존재하는 열을 표시합니다.pg_stats.

표 10-1.pg_stats

이름 유형 설명
테이블 이름 이름 열이 포함된 테이블의 이름
attname 이름 이 행에서 설명하는 열
null_frac 진짜 널인 열 항목의 비율
avg_width 정수 열 항목의 평균 너비(바이트)
n_distinct 진짜 0보다 크면 예상되는 열의 고유한 값입니다. 0보다 작으면, 고유 값 수를 다음으로 나눈 값의 음수 행 수. (부정형은 다음과 같은 경우에 사용됩니다.분석다음의 수가 있다고 믿습니다. 테이블이 커짐에 따라 고유 값도 증가할 가능성이 높습니다. 열에 다음이 있는 것처럼 보일 때 긍정적인 형식이 사용됩니다. 고정된 수의 가능한 값.) 예: -1 고유한 개수가 있는 고유 열을 나타냅니다. 값은 행 수와 같습니다.
most_common_vals 텍스트[] 열에서 가장 일반적인 값의 목록입니다. (어떤 값보다 더 흔한 값이 없으면 생략됩니다. 기타.)
most_common_freqs 진짜[] 가장 일반적인 값의 빈도 목록, 즉, 각각의 발생 횟수를 총계로 나눈 것입니다. 행 수입니다.
히스토그램_바운드 텍스트[] 열의 값을 다음과 같이 나누는 값 목록입니다. 인구가 거의 같은 그룹.most_common_vals, 존재하는 경우 히스토그램 계산에서는 생략되었습니다. (다음의 경우 생략 열 데이터 유형에이 없습니다.<연산자 또는 다음과 같은 경우most_common_vals다음 계정을 나열합니다. 전체 인구.)
상관관계 진짜 물리적 행 순서 간의 통계적 상관관계 열 값의 논리적 순서. 이 범위 -1에서 +1까지. 값이 -1 또는 +1에 가까울 때 인덱스 열에 대한 스캔은 다음보다 저렴할 것으로 예상됩니다. 0에 가까울 때 랜덤 액세스 감소로 인해 디스크에. (컬럼 데이터형이 없으면 생략<연산자.)

다음의 최대 항목 수most_common_vals그리고히스토그램_바운드어레이는 를 배트맨 토토여 열 단위로테이블 변경 배트맨 토토 설정명령. 현재 기본 제한은 10입니다. 항목. 한도를 높이면 더 정확한 플래너가 가능해질 수 있습니다. 특히 불규칙한 기둥의 경우 추정치가 작성됩니다. 더 많은 공간을 소비하는 대가로 데이터 배포pg_statistic그리고 약간 더 많은 시간 추정치를 계산합니다. 반대로 하한선은 다음과 같을 수 있습니다. 단순한 데이터 분포를 갖는 열에 적합합니다.