그pg_overexplain모듈 확장설명추가 출력을 제공하는 새로운 옵션이 있습니다. 일반적인 용도보다는 플래너의 디버깅 및 개발을 돕기 위한 것이 대부분입니다. 이 모듈은 플래너 데이터 구조의 내부 세부 정보를 표시하므로 출력을 이해하려면 소스 코드를 참조해야 할 수도 있습니다. 또한 해당 데이터 구조가 변경될 때마다(그리고 자주) 출력이 변경될 가능성이 높습니다.
이를 사용하려면 서버에 로드하면 됩니다. 개별 세션에 로드할 수 토토 결과.
LOAD 'pg_overexplain';
또한 포함하여 일부 또는 모든 세션에 미리 로드할 수도 토토 결과.pg_overexplaininsession_preload_libraries또는shared_preload_librariesinpostgresql.conf.
그디버그옵션은 일반적으로 관심을 끌 것으로 예상되지 않기 때문에 일반적으로 표시되지 않는 계획 트리의 기타 정보를 표시합니다. 각 개별 계획 노드에 대해 다음 필드가 표시됩니다. 보다계획in노드/plannodes.h이 필드에 대한 추가 문서를 확인하세요.
비활성화된 노드. 보통설명노드의 비활성화된 노드 수가 기본 노드의 수 합계보다 큰지 확인하여 노드가 비활성화되었는지 여부를 결정합니다. 이 옵션은 원시 카운터 값을 표시합니다.
병렬 안전. 계획 트리 노드가 아래에 나타나는 것이 안전한지 여부를 나타냅니다.집결또는집합 병합노드, 실제로 해당 노드 아래에 있는지 여부에 관계없이.
계획 노드 ID. 계획 트리의 모든 노드에 대해 고유해야 하는 내부 ID 번호입니다. 병렬 쿼리 활동을 조정하는 데 사용됩니다.
extParam그리고allParam. 번호가 매겨진 매개변수가 이 계획 노드나 그 하위에 영향을 미치는 것에 대한 정보입니다. 텍스트 모드에서 이러한 필드는 비어 있지 않은 세트인 경우에만 표시됩니다.
쿼리당 한 번씩,디버그옵션은 다음 필드를 표시합니다. 참조계획된 Stmtin노드/plannodes.h자세한 내용은.
명령 유형. 예를 들어,선택또는업데이트.
플래그. 의 부울 구조 멤버 이름을 쉼표로 구분한 목록입니다.계획된 Stmt다음으로 설정됨참. 다음 구조 멤버를 다룹니다.hasReturning, hasModifyingCTE, canSetTag, 임시 계획, 의존 역할, parallelModeNeeded.
되감기가 필요한 하위 계획. 실행자가 되돌려야 할 수 있는 하위 계획의 정수 ID입니다.
관계 OID. 이 계획이 의존하는 관계의 OID입니다.
실행자 매개변수 유형. 각 실행기 매개변수에 대해 OID를 입력합니다(예: 중첩 루프가 선택되고 매개변수가 값을 내부 인덱스 스캔으로 전달하는 데 사용되는 경우). 사용자가 준비된 문에 제공한 매개변수는 포함되지 않습니다.
파싱 위치. 이 쿼리의 텍스트를 찾을 수 있는 플래너에 제공된 쿼리 문자열 내의 위치입니다. 아마도알 수 없음일부 상황에서는. 그렇지 않으면 그럴 수도 토토 결과.NNN 종료까지일부 정수의 경우NNN또는MMM 바이트용 NNN일부 정수의 경우NNN그리고MMM.
그RANGE_TABLE옵션은 특히 쿼리의 범위 테이블과 관련된 계획 트리의 정보를 표시합니다. 범위 테이블 항목은 대략 쿼리에 나타나는 항목에 해당합니다.발신절이지만 예외가 많습니다. 예를 들어 불필요하다고 입증된 하위 쿼리는 범위 테이블에서 완전히 삭제될 수 있지만 상속 확장은 쿼리에서 직접 이름이 지정되지 않은 하위 테이블에 대한 범위 테이블 항목을 추가합니다.
범위 테이블 항목은 일반적으로 범위 테이블 인덱스(RTI)에 의해 쿼리 계획 내에서 참조됩니다. 하나 이상의 RTI를 참조하는 계획 노드에는 다음 필드 중 하나를 사용하여 그에 따라 라벨이 지정됩니다.RTI 스캔, 공칭 RTI, 관계 RTI 제외, RTI 추가.
또한 쿼리 전체는 다양한 목적에 필요한 범위 테이블 인덱스 목록을 유지할 수 토토 결과. 이 목록은 쿼리당 한 번씩 표시되며 적절하게 라벨이 지정됩니다.정리할 수 없는 RTI또는결과 RTI. 텍스트 모드에서 이러한 필드는 비어 있지 않은 세트인 경우에만 표시됩니다.
마지막으로 가장 중요한 것은,RANGE_TABLE옵션은 쿼리의 전체 범위 테이블 덤프를 표시합니다. 각 범위 테이블 항목에는 적절한 범위 테이블 색인, 범위 테이블 항목의 종류(예:관계, 하위 쿼리또는가입), 그 뒤에 일반적으로 포함되지 않는 다양한 범위 테이블 항목 필드의 내용이 옵니다.설명출력. 이러한 필드 중 일부는 특정 종류의 범위 테이블 항목에 대해서만 표시됩니다. 예를 들어,에레프모든 유형의 범위 테이블 항목에 대해 표시되지만CTE 이름유형의 범위 테이블 항목에 대해서만 표시됩니다.cte.
범위 테이블 항목에 대한 자세한 내용은 정의를 참조하세요.범위Tbl항목in노드/plannodes.h.
로버트 하스<rhaas@postgresql.org
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.