이 문서는 지원되지 않는 버전의 젠 토토을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다와이즈 토토 : 문서 : 17 : 와이즈 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

젠 토토

젠 토토 - 성명서의 실행 계획을 표시

시놉시스

젠 토토 [(옵션[, ...])성명서젠 토토 [분석] [Verbose]성명서

여기서옵션중 하나 일 수 있습니다 :분석 [부울]
    말로 [부울]
    비용 [부울]
    버퍼 [부울]
    타이밍 [부울]
    요약 [부울]
    형식 텍스트 | XML | JSON | Yaml

젠 토토

이 명령은 실행 계획을 표시합니다.젠 토토플래너는 제공된 진술을 생성합니다. 실행 계획은 명세서에 의해 참조 된 테이블이 평범한 순차적 스캔, 인덱스 스캔 등으로 어떻게 스캔되는지를 보여줍니다. 그리고 여러 테이블이 참조되면 각 입력 테이블에서 필요한 행을 결합하는 데 결합 된 알고리즘이 사용됩니다..

디스플레이의 가장 중요한 부분은 예상 명세서 실행 비용입니다. 이는 명령문을 실행하는 데 걸리는 시간에 대한 계획자의 추측입니다 (임의의 비용 단위로 측정되는 것이지만 일반적으로 디스크 페이지가 가져옵니다). 실제로 두 개의 숫자가 표시됩니다. 첫 번째 행 이전의 시작 비용은 반환 될 수 있으며 모든 행을 반환하는 총 비용. 대부분의 쿼리의 경우 총 비용은 중요하지만 서브 쿼리와 같은 상황에서는존재, 플래너는 가장 작은 총 비용 대신 가장 작은 스타트 업 비용을 선택합니다 (어쨌든 한 행을 얻은 후에 집행자가 멈출 수 있기 때문에). 또한 a로 돌아올 행 수를 제한하는 경우Limit조항에서, 플래너는 종말점 비용 사이에 적절한 보간을하여 어떤 계획이 실제로 가장 저렴한 지 추정합니다.

the분석옵션으로 인해 명령문이 실제로 실행됩니다. 그런 다음 실제 실행 시간 통계는 각 계획 노드 (밀리 초) 내에서 소비 된 총 경과 시간과 실제로 반환 한 총 행 수를 포함하여 디스플레이에 추가됩니다. 이것은 플래너의 추정치가 현실에 가까운 지 확인하는 데 유용합니다.

중요

진술이 실제로 실행되면분석옵션이 사용됩니다. 하지만젠 토토a 출력을 폐기합니다.select반환하고, 진술의 다른 부작용은 평소와 같이 발생합니다. 사용하고 싶다면분석 젠 토토on삽입, 업데이트, 삭제, 테이블 작성또는execute명령이 귀하의 데이터에 영향을 미치지 않으면 서이 방법을 사용하십시오.

시작;
분석 ...;
롤백;

분석andVerbose옵션 목록을 괄호로 둘러싸고 있지 않고도 옵션을 지정할 수 있습니다. 앞서서젠 토토9.0, 비 임시 구문은 유일하게 지원되는 구문이었습니다. 모든 새로운 옵션은 괄호 안정 구문에서만 지원 될 것으로 예상됩니다.

매개 변수

분석

명령을 수행하고 실제 실행 시간 및 기타 통계를 표시하십시오. 이 매개 변수 기본값은거짓.

Verbose

계획에 관한 추가 정보를 표시합니다. 구체적으로, 플랜 트리, 스키마-자격화 테이블 및 함수 이름에 각 노드에 대한 출력 열 목록을 포함시키고, 항상 범위 테이블 별명으로 표현식에 변수를 레이블을 지정하고, 통계가 표시되는 각 트리거의 이름을 항상 인쇄하십시오. 이 매개 변수 기본값은false.

비용

각 계획 노드의 예상 시작 및 총 비용에 대한 정보와 추정 행 수와 각 행의 추정 너비를 포함시킵니다. 이 매개 변수 기본값은true.

버퍼

버퍼 사용에 대한 정보를 포함하십시오. 구체적으로, 타격, 읽기, 더러운 및 서면 공유 블록의 수, 히트, 읽기, 더러운, 쓰기, 쓰여진 로컬 블록의 수, 읽기 및 쓰여진 온도 블록의 수를 포함합니다. 에이HIT| 필요할 때 블록이 이미 캐시에서 발견 되었기 때문에 읽기를 피했음을 의미합니다. 공유 블록에는 일반 테이블 및 인덱스의 데이터가 포함되어 있습니다. 로컬 블록에는 임시 테이블 및 인덱스의 데이터가 포함되어 있습니다. 임시 블록에는 정렬, 해시, 구체화 계획 노드 및 유사한 사례에 사용되는 단기 작업 데이터가 포함되어 있습니다. 블록 수Dirtied이 쿼리에 의해 변경된 이전에 수정되지 않은 블록의 수를 나타냅니다. 블록 수서면쿼리 처리 중에이 백엔드에 의해 캐시에서 퇴거 된 이전에 퇴거 된 블록의 수를 나타냅니다. 상위 노드에 대해 표시된 블록 수에는 모든 하위 노드가 사용하는 블록이 포함됩니다. 텍스트 형식에서는 0이 아닌 값 만 인쇄됩니다. 이 매개 변수는에만 사용할 수 있습니다.분석도 활성화되어 있습니다. 기본적으로거짓.

타이밍

출력의 각 노드에 소비 된 실제 시작 시간과 시간 포함. 시스템 시계를 반복적으로 읽는 오버 헤드는 일부 시스템에서 쿼리를 크게 느리게 할 수 있으므로이 매개 변수를 설정하는 것이 유용 할 수 있습니다거짓실제 행만 계산하는 경우 정확한 시간이 필요합니다. 이 옵션으로 노드 레벨 타이밍을 끄는 경우에도 전체 문의 실행 시간은 항상 측정됩니다. 이 매개 변수는에만 사용할 수 있습니다.분석도 활성화되어 있습니다. 기본적으로true.

요약

쿼리 계획 후에 요약 정보 (예 : 총 타이밍 정보) 포함. 요약 정보는 기본적으로 기본적으로 포함됩니다.분석는 사용되지만 기본적으로 포함되지 않지만이 옵션을 사용하여 활성화 할 수 있습니다. 계획 시간실행 젠 토토캐시에서 계획을 가져 오는 데 필요한 시간과 필요한 경우 다시 계획에 필요한 시간을 포함합니다.

형식

텍스트, XML, JSON 또는 YAML 일 수있는 출력 형식을 지정하십시오. 비 텍스트 출력에는 텍스트 출력 형식과 동일한 정보가 포함되어 있지만 프로그램이 더 쉽습니다. 이 매개 변수 기본값은텍스트.

부울

선택한 옵션을 켜거나 끄야하는지 여부를 지정합니다. 당신은 쓸 수 있습니다true, on또는1옵션을 활성화하려면거짓, OFF또는0비활성화하려면. 그만큼부울값도 생략 할 수 있습니다.True가정됩니다.

성명서

anyselect, 삽입, 업데이트, 삭제, , execute, 선언, 테이블 작성또는구체화 된보기 생성성명서, 누구의 실행 계획을보고 싶은지

출력

명령의 결과는를 위해 선택된 계획에 대한 텍스트 젠 토토입니다.성명서, 선택적으로 실행 통계로 주석이 달린다.PostgreSQL : 문서 : 11 : 14.1. 토토 결과 사용제공된 정보를 젠 토토합니다.

노트

허용하려면젠 토토쿼리를 최적화 할 때 합리적으로 정보에 입각 한 결정을 내릴 수있는 쿼리 플래너,PG_STATISTIC데이터는 쿼리에 사용되는 모든 테이블에 대해 최신 상태 여야합니다. 일반적으로autovacuum daemon이를 자동으로 처리합니다. 그러나 최근에 테이블이 내용이 상당한 변화를 겪었다면 매뉴얼을 수행해야 할 수도 있습니다.분석Autovacuum이 변경 사항을 따라 잡기를 기다리지 않고.

실행 계획에서 각 노드의 런타임 비용을 측정하려면 현재의 구현분석쿼리 실행에 프로파일 링 오버 헤드를 추가합니다. 결과적으로 실행분석쿼리에서 쿼리를 정상적으로 실행하는 것보다 훨씬 오래 걸릴 수 있습니다. 오버 헤드의 양은 쿼리의 특성과 사용되는 플랫폼에 따라 다릅니다. 최악의 사례는 실행 당 시간이 거의 필요하지 않은 계획 노드에서 발생하며 운영 체제가 비교적 느린 시간을 보유한 기계에서는 시간을 얻을 것을 요구합니다.

예제

단일 테이블에 간단한 쿼리 계획을 보여려면Integer열 및 10000 행 :

from from from from frome *를 젠 토토하십시오.

                       쿼리 계획
--------------------------------------------------------------------------------
 foo에서 seq 스캔 (cost = 0.00..155.00 행 = 10000 너비 = 4)
(1 행)

JSON 출력 서식이 포함 된 동일한 쿼리가 있습니다 :

젠 토토 (형식 JSON) 선택 *에서 foo;
           쿼리 계획
----------------------------------
 [ +
    +
     "계획":  +
       "노드 유형": "seq scan",+
       "관계 이름": "foo", +
       "별칭": "foo", +
       "시작 비용": 0.00, +
       "총 비용": 155.00, +
       "계획 행": 10000, +
       "계획 너비": 4 +
      +
    +
 ]]
(1 행)

인덱스가 있고 색인이있는 쿼리를 사용하는 경우여기서조건,젠 토토다른 계획을 보여줄 수 있습니다 :

from footh i = 4;

                         쿼리 계획
---------------------------------------------------------------------
 foo에서 fi를 사용한 인덱스 스캔 (비용 = 0.00..5.98 행 = 1 너비 = 4)
   색인 조건 : (i = 4)
(2 줄)

여기에 동일한 쿼리가 있지만 Yaml 형식 :

젠 토토 (형식 YAML)을 선택하십시오 * FOO에서 i = '4';
          쿼리 계획
-------------------------------------
 - 계획 : +
     노드 유형 : "인덱스 스캔" +
     스캔 방향 : "포워드"+
     인덱스 이름 : "fi" +
     관계 이름 : "foo" +
     별칭 : "foo" +
     시작 비용 : 0.00 +
     총 비용 : 5.98 +
     줄 계획 : 1 +
     계획 너비 : 4 +
     색인 조건 : "(i = 4)"    
(1 행)

XML 형식은 독자를위한 연습으로 남아 있습니다.

비용 추정이 억제 된 동일한 계획이 있습니다.

젠 토토 (false 비용)을 선택하십시오 * foo where i = 4;

        쿼리 계획
----------------------------
 foo에서 fi를 사용한 색인 스캔
   색인 조건 : (i = 4)
(2 줄)

집계 기능을 사용하는 쿼리에 대한 쿼리 계획의 예는 다음과 같습니다.

FOO에서 SOLE SOM SOM (i)을 선택하십시오.

                             쿼리 계획
-----------------------------------------------------------------------------------------
 집계 (비용 = 23.93..23.93 줄 = 1 너비 = 4)
   - foo에서 fi를 사용한 색인 스캔 (비용 = 0.00..23.92 행 = 6 너비 = 4)
         색인 조건 : (i <10)
(3 줄)

사용의 예는 다음과 같습니다.실행 젠 토토준비된 쿼리에 대한 실행 계획을 표시하려면 :

테스트에서 선택 합 (bar)으로 쿼리 (int, int)를 준비하십시오
    여기서 id $ 1 및 id <$ 2
    foo에 의한 그룹;

execute 쿼리 분석을 젠 토토하십시오 (100, 200);

                                                       쿼리 계획                                                       
------------------------------------------------------------------------------------------------------------------------
 해고 그레이트 (비용 = 9.54..9.54 줄 = 1 너비 = 8) (실제 시간 = 0.156..0.161 행 = 11 루프 = 1)
   그룹 키 : Foo
   - 테스트에서 test_pkey를 사용한 색인 스캔 (비용 = 0.29..9.29 행 = 50 너비 = 8) (실제 시간 = 0.039..0.091 행 = 99 루프 = 1)
         색인 조건 : ((ID $ 1) 및 (Id <$ 2))
 계획 시간 : 0.197ms
 실행 시간 : 0.225ms
(6 줄)

물론 여기에 표시된 특정 숫자는 관련된 테이블의 실제 내용에 따라 다릅니다. 또한 숫자와 선택한 쿼리 전략조차도마다 다를 수 있습니다.젠 토토플래너 개선으로 인한 릴리스. 또한분석명령은 임의의 샘플링을 사용하여 데이터 통계를 추정합니다. 따라서 새로운 실행 후 비용 추정치가 변경 될 수 있습니다.분석, 테이블의 실제 데이터 분포가 변경되지 않더라도.

호환성

없음젠 토토SQL 표준에 정의 된 명령문

참조

분석