와이즈 토토 [(옵션[, ...])진술와이즈 토토 [분석] [Verbose]Statement
여기서옵션|분석 [부울]
말로 [부울]
비용 [부울]
버퍼 [부울]
타이밍 [부울]
형식 텍스트 | XML | JSON | Yaml
이 명령은 실행 계획을 표시합니다.와이즈 토토플래너는 제공된 용도를 생성합니다 성명. 실행 계획은 테이블이 참조하는 방법을 보여줍니다 명세서는 평범한 순차적 스캔으로 스캔됩니다. 스캔 등 - 여러 테이블이 참조되면 어떤 조인 알고리즘은 필요한 행을 모으는 데 사용됩니다. 각 입력 테이블.
디스플레이의 가장 중요한 부분은 추정 된 진술입니다. 실행 비용, 이것은 기획 시간에 대한 추측입니다. 진술을 실행하십시오 (비용 단위로 측정 됨 임의적이지만 일반적으로 디스크 페이지가 가져옵니다). 실제로 두 개 숫자가 표시됩니다 : 첫 번째 줄 이전의 시작 비용은 반품, 모든 행을 반환하는 데 총 비용이 있습니다. 대부분의 경우 총 비용은 중요한 것이지만 하위 쿼리존재, 플래너는 총계 대신 가장 작은 스타트 업 비용을 선택하십시오. 비용 (어쨌든 한 행을 얻은 후에 집행자가 멈출 수 있기 때문에). 또한 a로 돌아올 행 수를 제한하는 경우Limit조항, 플래너는 적절합니다 어떤 계획인지 추정하기 위해 종말점 비용 사이의 보간 정말 가장 저렴합니다.
the분석옵션은 문을 만듭니다 계획된 것이 아니라 실제로 실행됩니다. 그런 다음 실제 실행 시간 총 경과를 포함하여 디스플레이에 통계가 추가됩니다. 각 계획 노드 (밀리 초) 내에서 소비 된 시간과 총 실제로 반환 한 행의 수. 이것은 보는 데 유용합니다 플래너의 추정치가 현실에 가까운 지 여부.
중요 :진술은 실제로임을 명심하십시오 에 실행분석옵션이 사용됩니다. 하지만와이즈 토토출력을 폐기합니다 그 aselect다른쪽으로 돌아올 것입니다 진술의 효과는 평소와 같이 발생합니다. 사용하고 싶다면분석on삽입, 업데이트, 삭제, 테이블 작성또는execute명령은 귀하의 데이터에 영향을 미치고이 접근법을 사용합니다.
시작; 분석 ...; 롤백;
만분석및Verbose옵션을 지정할 수 있습니다 옵션 목록을 괄호로 둘러싸고 주문하십시오. 앞서서와이즈 토토9.0, the 비 임시 구문은 유일하게 지원되는 구문이었습니다. 예상됩니다 모든 새로운 옵션은 괄호 안에서만 지원됩니다. 통사론.
명령을 내리고 실제 실행 시간 및 기타 표시 통계. 이 매개 변수 기본값은거짓.
계획에 관한 추가 정보를 표시합니다. 구체적으로, 계획 트리의 각 노드에 대한 출력 열 목록을 포함시키고 스키마 자격이있는 테이블 및 기능 이름은 항상 변수를 레이블을 지정합니다 레인지 테이블 별명이있는 표현식 및 항상 이름을 인쇄하십시오. 통계가 표시되는 각 트리거의 이 매개 변수 기본값으로거짓.
추정 시작 및 총 비용에 대한 정보 포함 각 계획 노드뿐만 아니라 추정 행 수 및 각 행의 추정 너비. 이 매개 변수 기본값은true.
버퍼 사용에 대한 정보를 포함하십시오. 구체적으로 공유 블록 수는 히트, 읽기, 발포 및 작성된 번호 현지 블록의 히트, 읽기, 더러운, 서면 및 수의 수 임시 블록 읽기 및 작성. 에이HIT는 읽기를 피했음을 의미합니다 필요할 때 블록이 이미 캐시에서 발견 되었기 때문입니다. 공유 블록에는 일반 테이블 및 인덱스의 데이터가 포함되어 있습니다. 로컬 블록 임시 테이블 및 인덱스의 데이터를 포함합니다. 임시 블록 정렬, 해시, 구체화 된 단기 작업 데이터를 포함합니다 계획 노드 및 유사한 경우. 블록 수Dirtied수를 나타냅니다 이 쿼리에 의해 변경된 이전에는 수정되지 않은 블록; ~하는 동안 블록 수서면수를 나타냅니다 이 백엔드 기간 동안 캐시에서 퇴거 된 이전에 디어링 된 블록 쿼리 처리. 상위 수준에 대해 표시된 블록 수 노드에는 모든 하위 노드에서 사용하는 노드가 포함됩니다. 텍스트 형식으로 0이 아닌 값 만 인쇄됩니다. 이 매개 변수 만 사용될 수 있습니다 언제분석도 활성화되어 있습니다. 기본값 에게거짓.
실제 시작 시간과 시간 포함 각 노드에 소비 된 시간과 시간 포함 산출. 시스템 시계를 반복적으로 읽는 오버 헤드는 가능합니다 일부 시스템에서 쿼리를 크게 느리게하므로 이 매개 변수를로 설정하는 데 유용합니다.거짓언제 정확한 시간이 아닌 실제 행 계산 만 필요합니다. 런타임 전체 명령문 중 노드 레벨이라도 항상 측정됩니다. 이 옵션으로 타이밍이 꺼집니다. 이 매개 변수는 일 수 있습니다 사용분석도 활성화되어 있습니다. 그것 기본값으로true.
텍스트, XML, JSON 또는 또는 출력 형식을 지정하십시오. 얌. 비 텍스트 출력에는 텍스트와 동일한 정보가 포함되어 있습니다 출력 형식이지만 프로그램이 구문 분석하기가 더 쉽습니다. 이 매개 변수 기본값으로텍스트.
선택한 옵션을 켜야하는지 여부를 지정하거나 끄다. 당신은 쓸 수 있습니다true, on또는1옵션 및거짓, off또는0비활성화하려면. 그만큼부울값도 가능합니다 생략, 어떤 경우trueis 꾸민.
Anyselect, 삽입, 업데이트, 삭제, 값, execute, 선언또는테이블 작성성명서 보고 싶은 계획.
허용하기 위해와이즈 토토합리적으로 만들기위한 쿼리 플래너 쿼리를 최적화 할 때 정보에 입각 한 결정,PG_STATISTIC데이터는 최신이어야합니다 쿼리에 사용 된 모든 테이블. 일반적으로autovacuum daemon자동으로 관리합니다. 그러나 최근에 테이블이 있었다면 내용의 실질적인 변경 사항은 와이즈 토토서를 수행해야 할 수도 있습니다PostgreSQL : 문서 : 9.3 : 토토 커뮤니티대신 대신 변화를 따라 잡기위한 autovacuum.
각 노드의 런타임 비용을 측정하려면 실행 계획, 현재 구현분석쿼리에 프로파일 링 오버 헤드를 추가합니다 실행. 결과적으로 실행와이즈 토토 분석쿼리에서 때때로 훨씬 더 오래 걸릴 수 있습니다 쿼리를 정상적으로 실행하는 것보다. 오버 헤드의 양은 달라집니다 쿼리의 특성과 사용되는 플랫폼. 그만큼 최악의 경우는 그 자체로 매우 필요로하는 계획 노드에서 발생합니다. 실행 당 거의 시간과 상대적으로있는 기계에서 느린 운영 체제는 시간을 얻을 것을 요구합니다.
단일 테이블에 간단한 쿼리 계획을 표시하려면Integer열 및 10000 행 :
from from from from from from extion *; 쿼리 계획 -------------------------------------------------------------------------------- foo에서 seq 스캔 (cost = 0.00..155.00 행 = 10000 너비 = 4) (1 행)
JSON 출력 서식이 포함 된 동일한 쿼리가 있습니다.
와이즈 토토 (형식 JSON) 선택 * From Foo; 쿼리 계획 ---------------------------------- [ + + "계획": + "노드 유형": "seq scan",+ "관계 이름": "foo", + "별칭": "foo", + "시작 비용": 0.00, + "총 비용": 155.00, + "계획 행": 10000, + "계획 너비": 4 + + + ]] (1 행)
인덱스가 있고 색인이있는 쿼리를 사용하는 경우여기서조건,와이즈 토토다른 계획을 보여줄 수 있습니다 :
와이즈 토토 *에서 foo where 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에서 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 줄)
사용의 예는 다음과 같습니다.와이즈 토토 실행하다준비된 실행 계획을 표시합니다 질문:
테스트에서 SELECT SUM (bar)으로 쿼리 (int, int)를 준비하십시오 여기서 id $ 1 및 id <$ 2 foo에 의한 그룹; execute 쿼리 분석을 와이즈 토토하십시오 (100, 200); 쿼리 계획 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. 해고 그레이트 (비용 = 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) 및 (Id <$ 2)) 총 런타임 : 0.851ms (4 줄)
물론 여기에 표시된 특정 숫자는 실제에 따라 다릅니다. 관련된 테이블의 내용. 또한 숫자와 선택한 쿼리 전략조차도마다 다를 수 있습니다.와이즈 토토플래너로 인한 릴리스 개량. 또한분석명령은 임의의 샘플링을 사용하여 데이터 통계를 추정합니다. 따라서 비용 추정치가 신선한 실행분석, 실제라도 테이블의 데이터 분포가 변경되지 않았습니다.