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