PostgreSQL EXPLAIN 시각화 도구
EXPLAIN ANALYZE JSON을 시간, 추정치, 버퍼가 담긴 읽기 쉬운 계획 트리로 변환
입력
EXPLAIN (FORMAT JSON) 출력을 붙여 넣으세요. QUERY PLAN 머리글과 + 표시가 있는 psql 출력도 지원합니다.
최대 5 MB까지 브라우저에서 분석하며 저장하지 않습니다.
요약
아래 명령을 실행해 JSON 결과를 왼쪽에 붙여 넣거나 예시를 불러오세요.
권장 명령
EXPLAIN ( ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON ) SELECT ...;
ANALYZE는 문을 실제로 실행합니다. INSERT, UPDATE, DELETE는 BEGIN과 ROLLBACK으로 감싸세요.
실행 계획
EXPLAIN 계획을 기다리는 중입니다.
표시 내용
PostgreSQL EXPLAIN Visualizer는 EXPLAIN (FORMAT JSON) 출력을 접을 수 있는 계획 트리, 정렬 가능한 노드 표, 서식을 적용한 원본 JSON으로 바꿉니다. 요약에는 실행 시간과 계획 시간, 노드 수, 가장 느린 노드, 가장 큰 행 추정 오차, 공유 버퍼 밖에서 읽은 블록 수가 표시됩니다. 노드를 선택하면 PostgreSQL이 보고한 모든 필드를 볼 수 있습니다.
계획 수집 방법
EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE, FORMAT JSON) 뒤에 쿼리를 붙여 실행한 다음 결과를 붙여 넣으세요. QUERY PLAN 머리글, + 연속 표시, 행 수 바닥글이 있는 psql 출력은 자동으로 정리됩니다. ANALYZE는 문을 실행하므로 INSERT, UPDATE, DELETE는 BEGIN과 ROLLBACK으로 감싸세요. ANALYZE 없이 수집한 계획도 비용과 추정치는 보여 주지만 시간 기반 분석은 건너뜁니다.
지표 계산 방법
총 시간은 루프당 실제 시간에 루프 수를 곱한 값이며, Gather 노드 아래에서는 병렬 작업을 여러 번 세지 않도록 프로세스 수로 나눕니다. 자체 시간은 자식 노드의 총 시간을 빼고 0 아래로 내려가지 않게 하므로 병렬 계획, CTE, InitPlan, SubPlan에서는 근사치입니다. 추정 배수는 루프당 실제 행과 추정 행을 비교합니다. EXPLAIN의 버퍼 수는 자식 노드를 포함하므로 자체 값은 자식 값을 뺀 것입니다. 블록 크기는 기본값 8 kB로 가정합니다.
분석 결과와 한계
분석 결과는 계획의 수치를 근거로 한 관찰입니다. 큰 행 추정 오차, 안쪽 실행이 많은 Nested Loop, 대부분의 행을 버리는 순차 스캔, 디스크로 넘친 정렬과 해시, 임시 파일, 공유 버퍼 밖에서의 읽기, 실행 시간을 독차지하는 노드를 다룹니다. 제안은 신중하며 만들 특정 인덱스를 지목하지 않습니다. 계획만으로는 쿼리 빈도, 쓰기 부하, 데이터 분포를 알 수 없기 때문입니다.
개인정보 보호
실행 계획에는 테이블 이름, 스키마 이름, 조건식, 리터럴 값이 드러날 수 있습니다. 계획은 브라우저에서 해석되고 큰 계획은 Web Worker에서 처리되며, 업로드되거나 기록되거나 저장되지 않습니다. 선택한 보기(트리, 표, 원본)만 기억합니다.
