이전 섹션에서 볼 수 있듯이 쿼리 플래너는 쿼리 계획을 잘 선택하기 위해 쿼리에서 검색된 행 수를 추정해야합니다. 이 섹션은 시스템 이이 추정치에 사용하는 통계를 빠르게 살펴보십시오.
메이저 토토 사이트의 한 구성 요소는 각 테이블 및 인덱스의 총 항목 수와 각 테이블 및 인덱스가 차지하는 디스크 블록 수입니다. 이 정보는 표에 보관됩니다pg_class
, 열에서Reltuples
및Relpages
. 우리는 이것과 비슷한 쿼리로 그것을 볼 수 있습니다 :
Relname, Relkind, Reltuples, Relpages를 선택하십시오 pg_class에서 여기서 relname은 'tenk1%'; Relname | Relkind | reltuples | 재선 ------------------------------------------------------ Tenk1 | r | 10000 | 358 Tenk1_hundred | i | 10000 | 30 tenk1_thous_tenthous | i | 10000 | 30 Tenk1_unique1 | i | 10000 | 30 Tenk1_unique2 | i | 10000 | 30 (5 줄)
여기서 볼 수 있습니다Tenk1
인덱스와 마찬가지로 10000 행이 포함되어 있지만 인덱스는 테이블보다 훨씬 작습니다.
효율성 이유,Reltuples
andRelpages
는 즉석에서 업데이트되지 않으므로 일반적으로 다소 오래된 값을 포함합니다. 그들은에 의해 업데이트됩니다.진공
, 분석
및와 같은 몇 가지 DDL 명령색인 생성
. 에이진공
또는분석
전체 테이블을 스캔하지 않는 작동 (일반적으로 경우)은 점차 업데이트됩니다Reltuples
스캔 한 테이블 부분을 기준으로 계산하여 대략적인 값을 초래합니다. 어쨌든 플래너는에서 찾은 값을 확장합니다.pg_class
현재 물리적 테이블 크기와 일치하려면 근사치가 더 가까이 얻습니다.
대부분의 쿼리는 테이블에서 행의 일부만 검색하여여기서
검사 할 행을 제한하는 조항. 따라서 플래너는를 추정해야합니다.선택성of여기서
조항, 즉의 각 조건과 일치하는 행의 비율여기서
절. 이 작업에 사용 된 정보는에 저장됩니다.PG_STATISTIC
시스템 카탈로그. 출품작PG_STATISTIC
분석
and진공 분석
명령, 신선하게 업데이트 될 때에도 항상 근사치입니다.
보지 않고PG_STATISTIC
직접, 그 견해를 보는 것이 좋습니다PG_STATS
수동으로 메이저 토토 사이트를 검토 할 때.PG_STATS
는보다 쉽게 읽을 수 있도록 설계되었습니다. 뿐만 아니라,PG_STATS
모두 읽을 수 있지만PG_STATISTIC
슈퍼 사용자 만 읽을 수 있습니다. (이것은 비전지가없는 사용자가 메이저 토토 사이트에서 다른 사람들의 테이블의 내용에 대해 배우는 것을 방지합니다.PG_STATS
보기는 현재 사용자가 읽을 수있는 테이블에 대한 행만 표시하도록 제한됩니다.) 예를 들어, 우리는 다음과 같습니다..
ATTNAME 선택, 상속, N_DISTINCT, most_common_vals로 array_to_string (most_common_vals, e '\ n') pg_stats에서 여기서 tableName = '도로'; ATTNAME | 상속 | n_distinct | 대부분의 _common_vals ---------+-----------+---------------------------------------------------- 이름 | f | -0.363388 | I-580 램프+ | | | I-880 램프+ | | | SP Railroad + | | | i-580 + | | | I-680 경사로 이름 | t | -0.284859 | I-880 램프+ | | | I-580 램프+ | | | I-680 램프+ | | | i-580 + | | | State Hwy 13 Ramp (2 줄)
동일한 열에 대해 두 개의 행이 표시되며, 하나는에서 시작하는 전체 상속 계층에 해당합니다.Road
테이블 (상속
=t
), 그리고 다른 하나는Road
테이블 자체 (상속
=F
).
저장된 정보의 양PG_STATISTIC
by분석
, 특히의 최대 항목 수most_common_vals
andhistogram_bounds
각 열의 배열,를 사용하여 열별로 설정할 수 있습니다Alter Table Set Statistics
명령 또는 전 세계적으로default_statistics_target구성 변수. 기본 제한은 현재 100 개의 항목입니다. 한도를 높이면 더 많은 공간을 소비하는 가격에PG_STATISTIC
추정치 계산에 약간 더 많은 시간. 반대로, 간단한 데이터 배포가있는 열에는 낮은 한계가 충분할 수 있습니다.
플래너의 메이저 토토 사이트 사용에 대한 자세한 내용은에서 찾을 수 있습니다.토토 베이 : 문서 : 14 : 72 장. 플래너가 통계를 사용하는 방법.
쿼리 클로스에 사용 된 여러 열이 상관되기 때문에 느린 쿼리가 잘못 실행 계획을 실행하는 것이 일반적입니다. 플래너는 일반적으로 여러 조건이 서로 독립적이라고 가정합니다. 열 값이 상관 될 때 유지되지 않는 가정입니다. 개별 별 컬럼 당 성격으로 인해 일반 메이저 토토 사이트는 크로스 컬럼 상관 관계에 대한 지식을 포착 할 수 없습니다. 하지만,PostgreSQL계산 능력이 있습니다다변량 메이저 토토 사이트, 그러한 정보를 캡처 할 수 있습니다.
가능한 열 조합의 수는 매우 크기 때문에 자동으로 다변량 메이저 토토 사이트를 계산하는 것이 비현실적입니다. 대신에,확장 메이저 토토 사이트 개체, 더 자주 Just라고 불메이저 토토 사이트 개체, 흥미로운 열 세트에서 메이저 토토 사이트를 얻도록 서버를 지시하기 위해 생성 될 수 있습니다.
메이저 토토 사이트 객체는를 사용하여 생성됩니다메이저 토토 사이트 생성
명령. 그러한 객체의 생성은 단지 메이저 토토 사이트에 대한 관심을 표현하는 카탈로그 항목을 만듭니다. 실제 데이터 수집은에 의해 수행됩니다.분석
(수동 명령 또는 배경 자동 분석). 수집 된 값은에서 검사 할 수 있습니다.PG_STATISTIC_EXT_DATA
카탈로그
분석
정기적 인 단일 열 통계를 컴퓨팅하는 데 걸리는 것과 동일한 테이블 행의 샘플을 기반으로 확장 통계를 계산합니다. 테이블 또는 그 열의 통계 대상을 늘려 표본 크기가 증가하기 때문에 (이전 섹션에서 설명한대로) 더 큰 통계 목표는 일반적으로보다 정확한 확장 통계를 초래할뿐만 아니라 더 많은 시간을 계산하는 데 소요됩니다..
다음 하위 섹션에서는 현재 지원되는 확장 통계의 종류를 설명합니다.
가장 간단한 종류의 확장 메이저 토토 사이트 추적기능적 종속성, 데이터베이스 정의 정의에 사용되는 개념. 우리는 그 칼럼이라고 말합니다B
열에 기능적으로 의존합니다a
값에 대한 지식이a
값을 결정하기에 충분합니다B
, 그것은 동일한 값을 가진 두 줄이 없습니다a
그러나 다른 값B
. 완전히 정규화 된 데이터베이스에서 기능적 종속성은 기본 키 및 슈퍼 키에만 존재해야합니다. 그러나 실제로 많은 데이터 세트는 여러 가지 이유로 완전히 정규화되지 않습니다. 성능의 이유에 대한 의도적 인 피식이 일반적인 예입니다. 완전히 정규화 된 데이터베이스에서도 일부 열간에 부분적 상관 관계가있을 수 있으며, 이는 부분 기능 의존성으로 표현 될 수 있습니다.
기능적 종속성의 존재는 특정 쿼리에서 추정치의 정확도에 직접적인 영향을 미칩니다. 쿼리에 독립 및 종속 열의 조건이 포함 된 경우 종속 열의 조건은 결과 크기를 더 이상 감소시키지 않습니다. 그러나 기능적 의존성에 대한 지식이 없으면 쿼리 플래너는 조건이 독립적이라고 가정하여 결과 크기를 과소 평가합니다..
플래너에게 기능 의존성에 대해 알리려면분석
크로스 컬럼 종속성 측정을 수집 할 수 있습니다. 모든 열 세트 간의 종속성 정도를 평가하는 것은 엄청나게 비싸므로 데이터 수집은에 정의 된 메이저 토토 사이트 객체에 함께 나타나는 열의 그룹으로 제한됩니다.종속성
옵션. 만드는 것이 좋습니다종속성
두 가지에서 불필요한 오버 헤드를 피하기 위해 강하게 상관 관계가있는 열 그룹에 대해서만 메이저 토토 사이트분석
및 이후 쿼리 계획.
23154_23222
도시에 통계 Stts (종속성), Zipcodes의 zip; zipcodes 분석; stxname, stxkeys, stxdddependencies를 선택하십시오 pg_statistic_ext에서 pg_statistic_ext_data on (oid = stxoid) 여기서 stxname = 'stts'; stxname | stxkeys | stxdddependencies ---------+--------+--------------------------------------------- Stts | 1 5 | "1 = 5": 1.000000, "5 = 1": 0.423130
여기서 열 1 (우편 번호)은 열 5 (도시)를 완전히 결정하여 계수가 1.0이면 도시는 우편 번호 만 결정하는 반면, 단일 우편 번호보다 더 많은 도시 (58%)가 있음을 의미합니다.
기능적 종속 열과 관련된 쿼리의 선택성을 계산할 때 플래너는 과소 평가를 생성하지 않도록 종속성 계수를 사용하여 조건 당 선택성 추정치를 조정합니다.
기능적 종속성은 현재 열을 일정한 값과 비교하는 간단한 평등 조건을 고려할 때만 적용됩니다.in
일정한 값을 가진 조항. 두 열을 비교하거나 열을 표현과 비교하거나 범위 조항을 비교하는 평등 조건에 대한 추정치를 개선하는 데 사용되지 않습니다.Like
또는 다른 유형의 조건.
기능적 종속성으로 추정 할 때 플래너는 관련 열의 조건이 호환되어 중복된다고 가정합니다. 호환되지 않으면 올바른 추정치는 0 행이지만 그 가능성은 고려되지 않습니다. 예를 들어,과 같은 쿼리가 주어지면
선택 * City = 'San Francisco'및 Zip = '94105';에서 Zipcodes에서 선택 *
플래너는를 무시합니다City
선택성을 변경하지 않은 절은 정확합니다. 그러나 그것은에 대해 같은 가정을 할 것입니다
선택 * City = 'San Francisco'및 Zip = '90210';에서 Zipcodes에서 선택 * 선택 *
이 쿼리를 만족하는 행이 실제로 0 인 경우가 있습니다. 기능 의존성 메이저 토토 사이트는 결론을 내릴 수있는 충분한 정보를 제공하지 않습니다.
많은 실제 상황 에서이 가정은 일반적으로 만족됩니다. 예를 들어, 애플리케이션에는 쿼리에서 사용할 수있는 호환 도시 및 우편 번호 값 만 선택할 수있는 GUI가있을 수 있습니다. 그러나 그렇지 않은 경우 기능적 종속성은 실행 가능한 옵션이 아닐 수 있습니다.
단일 열 메이저 토토 사이트 각 열에 고유 한 값의 수를 저장합니다. 둘 이상의 열을 결합 할 때 고유 한 값 수의 추정치 (예 :그룹 별 그룹, b
) 플래너가 단일 열 메이저 토토 사이트 데이터 만 있으면 잘못된 계획을 선택할 수있는 경우 자주 잘못됩니다.
그러한 추정치를 개선하려면분석
열 그룹에 대한 n- 결정 통계를 수집 할 수 있습니다. 이전과 마찬가지로 가능한 모든 열 그룹화에 대해이 작업을 수행하는 것은 비현실적이므로 데이터는로 정의 된 통계 객체에 함께 나타나는 열의 그룹에 대해서만 수집됩니다.ndistinct
옵션. 나열된 열 세트에서 2 개 이상의 열의 가능한 조합에 대해 데이터가 수집됩니다.
이전 예를 계속하면, 우편 번호 테이블의 N- 결정 수는 다음과 같을 수 있습니다.
도시, 주, zipcodes의 zip에 통계 Stts2 (ndistinct) 생성; zipcodes 분석; stxkeys를 K, stxdndistinct로 선택하십시오 pg_statistic_ext에서 pg_statistic_ext_data on (oid = stxoid) 여기서 stxname = 'stts2'; -[레코드 1] ----------------------------------------------------- k | 1 2 5 nd | "1, 2": 33178, "1, 5": 33178, "2, 5": 27435, "1, 2, 5": 33178
이것은 33178 개의 별개의 값을 갖는 열의 세 가지 조합이 있음을 나타냅니다. 우편 번호 및 상태; 우편 번호 및 도시; 우편 번호, 도시 및 주 (우편 번호 만이이 표에서 독특하다는 점에서 모두 동일하다는 사실이 예상됩니다). 반면에 도시와 국가의 조합에는 27435 개의 뚜렷한 값이 있습니다.
생성하는 것이 좋습니다ndistinct
메이저 토토 사이트 객체는 실제로 그룹화에 사용되는 열의 조합과 그룹 수의 오해가 나쁜 계획을 초래하는 열의 조합에만 해당됩니다. 그렇지 않으면분석
사이클이 낭비되었습니다.
각 열에 저장된 다른 유형의 메이저 토토 사이트는 가장 일반적인 값 목록입니다. 이를 통해 개별 열에 대해 매우 정확한 추정치가 가능하지만 여러 열의 조건에 따라 쿼리에 대해 상당한 오해가 발생할 수 있습니다..
그러한 추정치를 개선하려면분석
열의 조합에서 MCV 목록을 수집 할 수 있습니다. 기능적 종속성 및 N- 정화 계수와 마찬가지로 가능한 모든 열 그룹에 대해이를 수행하는 것이 비현실적입니다. 이 경우 MCV 목록 (기능적 종속성 및 N- 결정 계수와 달리)이 공통 열 값을 저장하기 때문에 더욱 그렇습니다. 따라서 데이터는로 정의 된 통계 객체에 함께 나타나는 열의 그룹에 대해서만 수집됩니다.MCV
옵션.
이전 예를 계속하면, 우편 번호 테이블의 MCV 목록은 다음과 같을 수 있습니다 (간단한 통계 유형과 달리 MCV 목차를 검사하는 데 기능이 필요합니다) :.
29653_30733
이것은 도시와 주의 가장 일반적인 조합이 DC의 워싱턴이며 실제 빈도 (샘플에서) 약 0.35%임을 나타냅니다. 조합의 기본 주파수 (단순한 콜럼 당 주파수로부터 계산 된 바와 같이)는 0.0027%에 불과하므로 두 가지 순서가 낮습니다..
작성하는 것이 좋습니다MCV메이저 토토 사이트는 실제로 조건에서 실제로 사용되는 열의 조합과 그룹 수의 오해가 잘못된 계획을 초래하는 열의 조합에만 해당됩니다. 그렇지 않으면분석
및 계획주기가 낭비됩니다.
올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면