thePG_OVEREXPLAIN
확장설명
추가 출력을 제공하는 새로운 옵션. 주로 일반적인 용도보다는 플래너의 디버깅 및 개발을 돕기위한 것입니다. 이 모듈은 플래너 데이터 구조의 내부 세부 사항을 표시하므로 출력을 이해하려면 소스 코드를 참조해야 할 수도 토토 결과. 또한 출력은 해당 데이터 구조가 변경 될 때마다 (그리고 자주) 변경 될 가능성이 높습니다.
the디버그
옵션은 일반적인 관심이 없기 때문에 일반적으로 표시되지 않는 플랜 트리의 기타 정보를 표시합니다. 각 개별 계획 노드에 대해 다음 필드가 표시됩니다. 보다plan
in노드/plannodes.h
이 필드의 추가 문서화.
비활성화 노드
. 정상설명
노드의 비활성화 된 노드 수가 기본 노드에 대한 계수의 합보다 큰지 확인하여 노드가 비활성화되는지 여부를 결정합니다. 이 옵션은 원시 카운터 값을 보여줍니다.
Parallel Safe
. 플랜 트리 노드가 a 아래에 나타나는 것이 안전한지 여부를 나타냅니다.수집
또는합병 수집
노드, 실제로 그러한 노드 아래에 있는지 여부에 관계없이 노드.
계획 노드 ID
. 플랜 트리의 모든 노드에 고유 해야하는 내부 ID 번호. 병렬 쿼리 활동을 조정하는 데 사용됩니다.
ExtParam
andAllParam
. 번호가 매겨진 매개 변수에 대한 정보는이 계획 노드 또는 어린이에 영향을 미칩니다. 텍스트 모드 에서이 필드는 비어 있지 않은 세트 인 경우에만 표시됩니다.
쿼리 당 한 번디버그
옵션은 다음 필드를 표시합니다. 보다PlannedStmt
in노드/plannodes.h
자세한 내용은
명령 유형
. 예를 들어,select
또는업데이트
.
플래그
. 쉼표로 구분 된 부울 구조 목록에서PlannedStmt
로 설정된true
. 다음 구조 구성원을 다룹니다.hasereturning
, HasmodifyingCte
, CANSETTAG
, TransientPlan
, DependsonRole
, Parallel -Modeneeded
.
되감기가 필요한 하위 계획
. 집행자가 다시 wound해야 할 수있는 하위 계획의 정수 ID.
관계 OIDS
. 이 계획에 의존하는 관계의 Oid.
executor 매개 변수 유형
. 각각의 임원 매개 변수에 대한 OID 유형 (예 : 중첩 루프가 선택되고 매개 변수가 내부 색인 스캔으로 값을 전달하는 데 사용되는 경우). 사용자가 준비한 명령문에 제공되는 매개 변수는 포함되지 않습니다.
구문 분석 위치
. 이 쿼리의 텍스트를 찾을 수있는 플래너에 제공된 쿼리 문자열 내의 위치. 아마도알 수없는
어떤 상황에서. 그렇지 않으면nnn to end
일부 정수의 경우NNN
또는MMM 바이트의 NNN
일부 정수의 경우NNN
andmmm
.
theRange_table
옵션은 쿼리의 범위 테이블에 관한 계획 트리의 정보를 표시합니다. 범위 테이블 항목은 대략 쿼리에 나타나는 항목에 해당합니다From
조항이지만 수많은 예외가 있습니다. 예를 들어, 불필요한 하위 쿼리는 범위 테이블에서 완전히 삭제 될 수 있지만 상속 확장은 쿼리에 직접 명명되지 않은 하위 테이블의 범위 테이블 항목을 추가합니다.
범위 테이블 항목은 일반적으로 쿼리 계획 내에서 범위 테이블 인덱스 또는 RTI에 의해 참조됩니다. 하나 이상의 RTI를 참조하는 계획 노드는 다음 필드 중 하나를 사용하여 그에 따라 레이블이 지정됩니다.스캔 RTI
, 명목 RTI
, 관계 제외 rti
, Append RTIS
.
또한 쿼리 전체는 다양한 목적에 필요한 범위 테이블 인덱스 목록을 유지할 수 있습니다. 이 목록은 쿼리 당 한 번 표시되며예측 가능한 RTIS
또는결과 RTIS
. 텍스트 모드 에서이 필드는 비어 있지 않은 세트 인 경우에만 표시됩니다.
마지막으로, 그러나 가장 중요한 것은Range_table
옵션은 쿼리의 전체 범위 테이블의 덤프를 표시합니다. 각 범위 테이블 항목은 적절한 범위 테이블 인덱스, 범위 테이블 항목의 종류 (예 :로 표시되어 토토 결과.관계
, SubQuery
또는Join
), 일반적으로의 일부가 아닌 다양한 범위 테이블 입력 필드의 내용이 뒤 따릅니다.설명
출력. 이 필드 중 일부는 특정 종류의 범위 테이블 항목에 대해서만 표시됩니다. 예를 들어,EREF
모든 유형의 범위 테이블 항목에 대해 표시되지만CTE 이름
유형의 범위 테이블 항목에 대해서만 표시CTE
.
범위 테이블 항목에 대한 자세한 내용은의 정의를 참조하십시오.rangetblentry
in노드/plannodes.h
.
Robert Haas<rhaas@postgresql.org