와이즈 토토 [ (옵션 [, ...] ) ] 성명와이즈 토토 [ 분석 ] [ 자세한 와이즈 토토 ]성명
어디에서옵션다음 중 하나일 수 있습니다.분석 [부울]
자세한 내용 [부울]
비용 [부울]
버퍼 [부울]
타이밍 [부울]
형식 텍스트 | XML | JSON | YAML이 명령은 실행 계획을 표시합니다.포스트그레SQL플래너가 제공된 항목을 생성합니다. 성명. 실행 계획은 테이블이 참조되는 방식을 보여줍니다. 명령문은 일반 순차 스캔, 인덱스로 스캔됩니다. 스캔 등 - 여러 테이블이 참조되는 경우 어떤 조인을 해야 할까요? 알고리즘은 다음에서 필요한 행을 모으는 데 사용됩니다. 각 입력 테이블.
디스플레이의 가장 중요한 부분은 추정된 진술입니다 실행 비용(실행 비용)은 실행 기간이 얼마나 될지에 대한 기획자의 추측입니다. 명세서를 실행하는 데 소요되는 비용 단위로 측정됩니다. 임의적이지만 일반적으로 디스크 페이지 가져오기를 의미함). 실제로는 2개 숫자가 표시됩니다. 첫 번째 행 이전의 시작 비용은 반환되고 모든 행을 반환하는 데 드는 총 비용입니다. 대부분의 경우 총 비용을 쿼리하는 것이 중요하지만 다음과 같은 상황에서는 하위 쿼리 in존재함, 기획자는 가장 작은 총액 대신 가장 작은 시작 비용을 선택하십시오. 비용(어쨌든 실행자는 한 행을 얻은 후에 중지하므로). 또한, a로 반환할 행 수를 제한하는 경우한도절, 기획자는 적절한 조치를 취합니다. 엔드포인트 비용 간 보간을 통해 어떤 계획이 적합한지 추정 정말 저렴해요.
그분석옵션으로 인해 문이 발생합니다. 계획된 것이 아니라 실제로 실행되는 것입니다. 그러면 실제 실행 시간은 경과된 총 시간을 포함하여 통계가 디스플레이에 추가됩니다. 각 계획 노드 내에서 소비된 시간(밀리초) 및 총계 실제로 반환된 행 수입니다. 보는 데 유용합니다. 기획자의 추정이 현실에 가까운지 여부.
중요:이 진술은 실제로는 다음과 같은 경우 실행됩니다.분석옵션이 사용됩니다. 그래도와이즈 토토모든 출력을 삭제합니다. 그 a선택돌아오겠습니다, 반대편 성명서의 효과는 평소와 같이 발생합니다. 이용을 원하시는 경우분석 와이즈 토토에삽입, 업데이트, 삭제, 다음으로 테이블 생성, 또는실행문을 허용하지 않고 명령이 데이터에 영향을 미치면 다음 접근 방식을 사용하세요.
시작; 와이즈 토토 분석 ...; 롤백;
오직분석그리고상세옵션을 지정할 수 있으며 그 경우에만 옵션 목록을 괄호로 묶지 않고 순서대로 정렬합니다. 이전에포스트그레SQL9.0, 괄호가 없는 구문만 지원됩니다. 예상된다 모든 새로운 옵션은 괄호 안에만 지원됩니다. 구문.
명령을 실행하고 실제 실행 시간 및 기타 정보를 표시합니다. 통계. 이 매개변수의 기본값은거짓.
계획에 관한 추가 정보를 표시합니다. 구체적으로, 계획 트리의 각 노드에 대한 출력 열 목록을 포함합니다. 스키마 한정 테이블 및 함수 이름, 항상 변수에 레이블 지정 범위 테이블 별칭을 사용하여 표현식을 작성하고 항상 이름을 인쇄합니다. 통계가 표시되는 각 트리거의 이 매개변수 기본값은거짓.
예상 시작 및 총 비용에 대한 정보를 포함합니다. 각 계획 노드와 예상 행 수 및 각 행의 예상 너비. 이 매개변수의 기본값은참.
버퍼 사용량에 대한 정보를 포함합니다. 구체적으로 다음을 포함합니다. 적중, 읽기, 더티화 및 쓰기된 공유 블록 수 적중, 읽기, 더티화 및 쓰기된 로컬 블록의 수와 임시 블록을 읽고 썼습니다. 에이히트읽기가 방지되었음을 의미합니다. 필요할 때 블록이 이미 캐시에서 발견되었기 때문입니다. 공유됨 블록에는 일반 테이블과 인덱스의 데이터가 포함됩니다. 로컬 블록 임시 테이블과 인덱스의 데이터를 포함합니다. 임시 블록 동안 정렬, 해시, Materialise에 사용되는 단기 작업 데이터를 포함합니다. 계획 노드 및 유사한 경우. 블록 수더러워진개수를 나타냅니다. 이 쿼리에 의해 변경된 이전에 수정되지 않은 블록입니다. 동안 블록 수작성됨개수를 나타냅니다. 이 백엔드에 의해 캐시에서 제거된 이전에 더티된 블록 쿼리 처리. 상위 레벨에 대해 표시되는 블록 수 노드에는 모든 하위 노드에서 사용되는 노드가 포함됩니다. 텍스트 형식에서는 0이 아닌 값만 인쇄됩니다. 이 매개변수는 다음에만 사용할 수 있습니다. 언제분석또한 활성화되어 있습니다. 기본값 에거짓.
실제 시작 시간과 각 노드에서 소요된 시간을 출력. 시스템 시계를 반복적으로 읽는 오버헤드는 다음과 같습니다. 일부 시스템에서는 쿼리 속도가 크게 느려질 수 있습니다. 이 매개변수를 다음으로 설정하는 것이 유용합니다.거짓언제 정확한 시간이 아닌 실제 행 개수만 필요합니다. 런타임 노드 수준인 경우에도 전체 문의 내용이 항상 측정됩니다. 이 옵션을 사용하면 타이밍이 꺼집니다. 이 매개변수는 때 사용됨분석또한 활성화되어 있습니다. 그것 기본값은참.
TEXT, XML, JSON 또는 YAML. 텍스트가 아닌 출력에는 텍스트와 동일한 정보가 포함됩니다. 출력 형식이지만 프로그램이 구문 분석하기가 더 쉽습니다. 이 매개변수 기본값은텍스트.
선택한 옵션을 켜야 할지 아니면 켜야 할지 지정합니다. 꺼져. 쓸 수 있습니다참, 켜짐, 또는1활성화하려면 옵션 및거짓, 꺼짐또는0비활성화합니다.부울값은 다음과 같을 수도 있습니다. 생략된 경우참이다 가정합니다.
모두선택, 삽입, 업데이트, 삭제, 값, 실행, 선언또는다음으로 테이블 생성문, 그 실행 보고 싶은 계획을 세우세요.
허용하기 위해포스트그레SQL합리적으로 만들 수 있는 쿼리 플래너 쿼리를 최적화할 때 정보에 입각한 결정을 내리세요.pg_statistic데이터는 다음 날짜에 대해 최신이어야 합니다. 쿼리에 사용된 모든 테이블. 일반적으로autovacuum 데몬걸릴 것입니다 자동으로 처리됩니다. 하지만 최근에 테이블에 내용이 크게 변경되면 매뉴얼을 작성해야 할 수도 있습니다.PostgreSQL : 문서 : 9.3 : 토토 커뮤니티기다리기보다는 변경 사항을 따라잡기 위해 autovacuum을 수행합니다.
각 노드의 런타임 비용을 측정하기 위해 실행 계획, 현재 구현분석 와이즈 토토쿼리에 프로파일링 오버헤드를 추가합니다. 실행. 그 결과 실행 중와이즈 토토하세요 분석질의에 대해 때로는 훨씬 더 오랜 시간이 걸릴 수 있습니다. 정상적으로 쿼리를 실행하는 것보다 오버헤드 금액에 따라 다름 쿼리의 성격과 사용되는 플랫폼에 따라 달라집니다. 는 최악의 경우는 그 자체로 매우 많은 것을 필요로 하는 계획 노드에 대해 발생합니다. 실행당 시간이 짧고 상대적으로 느린 운영 체제에서는 시간을 확보해야 합니다.
단일 테이블에 대한 간단한 쿼리에 대한 계획을 표시하려면정수열 및 10000행:
와이즈 토토 SELECT * FROM foo;
쿼리 계획
-------------------------------
foo의 Seq 스캔(비용=0.00..155.00 행=10000 너비=4)
(1행)
다음은 JSON 출력 형식을 사용한 동일한 쿼리입니다.
EXPLAIN (JSON 형식) SELECT * FROM foo;
쿼리 계획
--------------------------------
[ +
+
"계획": +
"노드 유형": "Seq 스캔",+
"관계 이름": "foo", +
"별칭": "foo", +
"시작 비용": 0.00, +
"총 비용": 155.00, +
"계획 행": 10000, +
"평면 너비": 4 +
+
+
]
(1행)
인덱스가 있고 인덱싱 가능한 쿼리를 사용하는 경우어디조건,와이즈 토토다른 계획을 보여줄 수도 있습니다:
EXPLAIN SELECT * FROM foo WHERE i = 4;
쿼리 계획
------------------------------------
foo에서 fi를 사용한 인덱스 스캔(비용=0.00..5.98행=1너비=4)
지수 조건: (i = 4)
(2행)
다음은 동일한 쿼리이지만 YAML 형식입니다:
와이즈 토토(YAML 형식) SELECT * FROM foo WHERE i='4';
쿼리 계획
------------------
- 계획: +
노드 유형: "인덱스 스캔" +
스캔 방향: "앞으로"+
인덱스 이름: "fi" +
관계 이름: "foo" +
별칭: "foo" +
시작 비용: 0.00 +
총 비용: 5.98 +
계획 행: 1 +
평면 폭: 4 +
인덱스 조건: "(i = 4)"
(1행)
XML 형식은 독자의 연습 문제로 남겨둡니다.
다음은 비용 추정이 억제된 동일한 계획입니다:
와이즈 토토(비용 거짓) SELECT * FROM foo WHERE i = 4;
쿼리 계획
---------------
foo에서 fi를 사용한 인덱스 스캔
지수 조건: (i = 4)
(2행)
다음은 쿼리에 대한 쿼리 계획의 예입니다. 집계 함수:
EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;
쿼리 계획
--------------------------------------------------------
집계(비용=23.93..23.93행=1너비=4)
- foo에서 fi를 사용하여 인덱스 스캔(비용=0.00..23.92행=6너비=4)
지수 조건: (i < 10)
(3행)
다음은 사용 예입니다와이즈 토토하세요 실행준비된 실행 계획을 표시합니다. 쿼리:
PREPARE 쿼리(int, int) AS SELECT sum(bar) FROM 테스트
ID $1 AND ID < $2인 경우
그룹별로 foo;
EXPLAIN ANALYZE EXECUTE 쿼리(100, 200);
쿼리 계획
-----------------------------------------------------------------------------------------------
HashAggregate (비용=39.53..39.53 행=1 너비=8) (실제 시간=0.661..0.672 행=7 루프=1)
- 테스트 시 test_pkey를 사용한 인덱스 스캔(비용=0.00..32.97행=1311너비=8)(실제 시간=0.050..0.395행=99루프=1)
지수 조건: ((id $1) AND (id < $2))
총 런타임: 0.851ms
(4행)
물론 여기에 표시된 구체적인 숫자는 실제 수치에 따라 다릅니다. 관련된 테이블의 내용. 또한 숫자와 선택한 쿼리 전략도 다를 수 있습니다.와이즈 토토플래너로 인한 출시 개선. 게다가,분석명령은 무작위 샘플링을 사용하여 데이터 통계를 추정합니다. 따라서 비용 추정치는 일정 기간 이후에 변경될 수 있습니다. 새로운 실행분석, 실제 테이블의 데이터 분포는 변경되지 않았습니다.