배트맨 토토 - 성명서의 실행 계획을 표시
배트맨 토토 [(옵션
[, ...])진술
여기서옵션
중 하나 일 수 있습니다 :분석 [부울
]부울
]부울
]부울
]부울
]부울
]부울
]부울
]부울
]부울
]
이 명령은 실행 계획을 표시합니다.배트맨 토토플래너는 제공된 진술을 생성합니다. 실행 계획은 명세서에 의해 참조 된 테이블이 평범한 순차적 스캔, 인덱스 스캔 등으로 어떻게 스캔되는지를 보여줍니다. 그리고 여러 테이블이 참조되면 각 입력 테이블에서 필요한 행을 결합하는 데 결합 된 알고리즘이 사용됩니다..
디스플레이의 가장 중요한 부분은 예상 명세서 실행 비용입니다. 이는 명령문을 실행하는 데 걸리는 시간에 대한 플래너의 추측입니다 (임의적이지만 일반적으로 디스크 페이지를 의미하는 비용 단위로 측정 됨). 실제로 두 개의 숫자가 표시됩니다. 첫 번째 행 이전의 시작 비용은 반환 될 수 있으며 모든 행을 반환하는 총 비용.존재
, 플래너는 가장 작은 총 비용 대신 가장 작은 스타트 업 비용을 선택합니다 (어쨌든 실행자는 한 행을 얻은 후에 멈추기 때문에). 또한 a로 돌아올 행 수를 제한하는 경우Limit
조항에서, 플래너는 종말점 비용 사이에 적절한 보간을하여 어떤 계획이 실제로 가장 저렴한 지 추정합니다.
the분석
옵션으로 인해 명령문이 실제로 실행됩니다. 그런 다음 실제 실행 시간 통계는 각 계획 노드 (밀리 초) 내에서 소비 된 총 경과 시간과 실제로 반환 한 총 행 수를 포함하여 디스플레이에 추가됩니다.
진술은 실제로에 실행된다는 것을 명심하십시오.분석
옵션이 사용됩니다. 하지만배트맨 토토
a의 출력을 폐기합니다.select
반환하고, 진술의 다른 부작용은 평소와 같이 발생합니다. 사용하고 싶다면분석
on삽입
, 업데이트
, 삭제
, 병합
, 테이블 작성
또는execute
명령이 귀하의 데이터에 영향을 미치지 않으면 서이 접근법을 사용하십시오.
시작;
분석
명령을 수행하고 실제 실행 시간 및 기타 통계를 표시하십시오. 이 매개 변수 기본값은false
.
Verbose
계획에 관한 추가 정보를 표시합니다. 구체적으로, 플랜 트리, 스키마-자격화 테이블 및 함수 이름에 각 노드에 대한 출력 열 목록을 포함시키고, 항상 범위 테이블 별명으로 표현식에 변수를 레이블을 지정하고, 통계가 표시되는 각 트리거의 이름을 항상 인쇄하십시오.compute_query_id자세한 내용은. 이 매개 변수 기본값은false
.
비용
각 계획 노드의 예상 시작 및 총 비용에 대한 정보와 추정 행 수와 각 행의 추정 너비에 대한 정보를 포함시킵니다. 이 매개 변수 기본값은true
.
설정
구성 매개 변수에 대한 정보 포함. 특히, 내장 기본값과 다른 값을 가진 쿼리 계획에 영향을 미치는 옵션을 포함합니다.false
.
generic_plan
명령문에 매개 변수 자리 표시자가 포함하도록 허용$1
, 해당 매개 변수의 값에 의존하지 않는 일반적인 계획을 생성합니다. 보다준비
일반 계획 및 매개 변수를 지원하는 진술 유형에 대한 자세한 내용. 이 매개 변수는와 함께 사용할 수 없습니다.분석
. 기본적으로false
.
버퍼
버퍼 사용에 대한 정보를 포함하십시오. 구체적으로, 공유 블록의 수, 읽기, 더러운 및 서면, 히트, 읽기, 더러운 및 쓰여진 로컬 블록의 수, 읽기 및 작성된 온도 블록 수, 데이터 파일 블록, 로컬 블록 및 임시 파일 블록 (밀리 초) if를 읽고 쓰는 시간이 포함됩니다.track_io_timing가 활성화되었습니다. 에이HIT| 필요할 때 블록이 이미 캐시에서 발견 되었기 때문에 읽기를 피했음을 의미합니다. 공유 블록에는 일반 테이블 및 인덱스의 데이터가 포함되어 있습니다.Dirtied이 쿼리에 의해 변경된 이전에 수정되지 않은 블록의 수를 나타냅니다. 블록 수서면쿼리 처리 중에이 백엔드에 의해 캐시에서 퇴거 된 이전에 드리어 된 블록의 수를 나타냅니다. 상위 노드에 대해 표시된 블록 수에는 모든 하위 노드가 사용하는 블록이 포함됩니다.false
.
Serialize
비용에 대한 정보 포함SERIALIZINS쿼리의 출력 데이터는 클라이언트로 보내기 위해 텍스트 또는 이진 형식으로 변환하는 것입니다. 데이터 타입 출력 함수가 비싸거나 if 인 경우 쿼리를 정기적으로 실행하는 데 필요한 시간의 상당 부분이 될 수 있습니다.토스트ED 값은 외부 저장소에서 가져와야합니다.배트맨 토토
의 기본 동작,Serialize None
, 이러한 변환을 수행하지 않습니다. 만약에텍스트 직렬화
또는이진 시리얼
지정되고, 적절한 변환이 수행되며, 그렇게하는 시간은 측정됩니다 (타이밍 오프
지정). 인 경우버퍼
옵션도 지정된 다음 변환과 관련된 버퍼 액세스도 계산됩니다. 그러나 어떠한 경우에도배트맨 토토
실제로 결과 데이터를 클라이언트에게 보냅니다. 따라서 네트워크 전송 비용은 이런 식으로 조사 할 수 없습니다.분석
도 활성화되어 있습니다. 만약에Serialize
논쟁없이 쓰여졌습니다.텍스트
가정됩니다.
Wal
WAL 레코드 생성에 대한 정보 포함. 구체적으로, 레코드 수, 전체 페이지 이미지 수 (FPI) 및 바이트로 생성 된 WAL의 양이 포함됩니다.분석
도 활성화되어 있습니다. 기본적으로false
.
타이밍
출력의 각 노드에 소비 된 실제 시작 시간과 시간 포함. 시스템 시계를 반복적으로 읽는 오버 헤드는 일부 시스템에서 쿼리를 크게 느리게 할 수 있으므로이 매개 변수를 설정하는 것이 유용 할 수 있습니다false
실제 행만 계산하는 경우 정확한 시간이 필요합니다. 이 옵션으로 노드 레벨 타이밍을 끄는 경우에도 전체 문의 실행 시간은 항상 측정됩니다.분석
도 활성화되어 있습니다. 기본적으로true
.
요약
쿼리 계획 후에 요약 정보 (예 : 총 타이밍 정보) 포함. 요약 정보는 기본적으로 기본적으로 포함됩니다.분석
는 사용되지만 기본적으로 포함되지 않지만이 옵션을 사용하여 활성화 할 수 있습니다. 계획 시간Execute 배트맨 토토
캐시에서 계획을 가져 오는 데 필요한 시간과 필요한 경우 다시 계획에 필요한 시간을 포함합니다.
메모리
쿼리 계획 단계별 메모리 소비에 대한 정보를 포함시킵니다. 구체적으로, Planner Inmemory 구조에서 사용하는 정확한 양의 스토리지와 할당 오버 헤드를 고려한 총 메모리를 포함하십시오.false
.
형식
텍스트, XML, Yaml 또는 YAML 일 수있는 출력 형식을 지정하십시오. 비 텍스트 출력에는 텍스트 출력 형식과 동일한 정보가 포함되어 있지만 프로그램이 더 쉽습니다.텍스트
.
부울
선택한 옵션을 켜거나 끄야하는지 여부를 지정합니다. 당신은 쓸 수 있습니다true
, on
또는1
옵션을 활성화하려면false
, off
또는0
비활성화하려면. 그만큼부울
값도 생략 할 수 있습니다.true
가정됩니다.
진술
Anyselect
, 삽입
, 업데이트
, 삭제
, 병합
, 값
, execute
, 선언
, 테이블 작성
또는구체화 된보기 생성
성명서, 당신이보고 싶은 실행 계획.
명령의 결과는를 위해 선택된 계획에 대한 텍스트 배트맨 토토입니다.진술
, 선택적으로 실행 통계에 주석이 달린다.섹션 14.1제공된 정보를 배트맨 토토합니다.
허용하려면배트맨 토토쿼리를 최적화 할 때 합리적으로 정보에 입각 한 결정을 내릴 수있는 쿼리 플래너,PG_STATISTIC
데이터는 쿼리에 사용되는 모든 테이블에 대해 최신 상태 여야합니다. 일반적으로autovacuum daemon이를 자동으로 처리합니다. 그러나 최근에 테이블이 내용이 상당한 변화를 겪었다면 매뉴얼을 수행해야 할 수도 있습니다.분석
Autovacuum이 변경 사항을 따라 잡기를 기다리지 않고.
실행 계획에서 각 노드의 런타임 비용을 측정하기 위해 현재의 구현분석
쿼리 실행에 프로파일 링 오버 헤드를 추가합니다. 결과적으로 실행분석
쿼리에서 쿼리를 정상적으로 실행하는 것보다 훨씬 오래 걸릴 수 있습니다. 오버 헤드의 양은 쿼리의 특성과 사용되는 플랫폼에 따라 다릅니다.
단일 테이블에 간단한 쿼리 계획을 표시하려면Integer
열 및 10000 행 :
from from from from frome *를 배트맨 토토하십시오.
Yaml 출력 서식이 포함 된 동일한 쿼리가 있습니다.
배트맨 토토 (형식 Yaml) 선택 *에서 foo;
인덱스가 있고 색인이있는 쿼리를 사용하는 경우여기서
조건,배트맨 토토
다른 계획을 보여줄 수 있습니다 :
from footh i = 4;
여기에 동일한 쿼리가 있지만 Yaml 형식 :
배트맨 토토 (형식 YAML)을 선택하십시오 * FOO에서 i = '4';
XML 형식은 독자를위한 연습으로 남아 있습니다.
비용 추정이 억제 된 동일한 계획이 있습니다.
배트맨 토토 (FALSE 비용)을 선택하십시오 * FOO에서 i = 4;
다음은 집계 기능을 사용하는 쿼리에 대한 쿼리 계획의 예입니다.
FOO에서 SOLE SOM SOM (i)을 선택하십시오.
사용의 예는 다음과 같습니다.Execute 배트맨 토토
준비된 쿼리에 대한 실행 계획을 표시하려면 :
테스트에서 선택 합 (bar)으로 쿼리 (int, int)를 준비하십시오
물론 여기에 표시된 특정 숫자는 관련된 테이블의 실제 내용에 따라 다릅니다. 또한 숫자와 선택한 쿼리 전략조차도마다 다를 수 있습니다.배트맨 토토플래너 개선으로 인한 릴리스. 또한분석
명령은 임의의 샘플링을 사용하여 데이터 통계를 추정합니다. 따라서 새로운 실행 후 비용 추정치가 변경 될 수 있습니다.분석
, 테이블의 실제 데이터 분포가 변경되지 않더라도.
이전 예제에 a가 표시되었음을 알 수 있습니다.“Custom”execute
. 또한 매개 변수화 된 쿼리에 대한 일반적인 계획을보고 싶을 수도 있습니다.generic_plan
:
배트맨 토토 (generic_plan)
이 경우 파서는이를 올바르게 추론했습니다$1
and$2
와 동일한 데이터 유형을 가져야합니다id
, 그래서 매개 변수 유형 정보 부족준비
는 문제가되지 않았습니다. 다른 경우에는 매개 변수 기호의 유형을 명시 적으로 지정해야 할 수도 있습니다.
배트맨 토토 (generic_plan)
없음배트맨 토토
SQL 표준에 정의 된 명령문
다음 구문이 이전에 사용되었습니다배트맨 토토버전 9.0 및 여전히 지원됩니다 :
배트맨 토토 [분석] [Verbose]진술
이 구문에서 옵션은 정확히 표시된 순서로 지정되어야합니다.
올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면