기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
EXPLAIN 쿼리 플랜
PostgreSQL은 쿼리 실행 방법에 대한 세부 정보가 포함된 쿼리 계획을 반환하기 위한 EXPLAIN ANALYZE
및 옵션을 제공합니다EXPLAIN
.
EXPLAIN 명령문
이 EXPLAIN
명령문은 PostgreSQL 플래너가 지정된 명령문에 대해 생성한 쿼리 계획을 반환합니다. 쿼리 계획에는 다음이 표시됩니다.
-
명령문과 관련된 테이블을 스캔하는 방법 (예: 인덱스 스캔 또는 순차 스캔)
-
여러 테이블을 조인하는 방법 (예: 해시 조인, 병합 조인 또는 중첩 루프 조인)
쿼리 성능을 개선하려면 계획을 이해하는 것이 중요합니다. 계획을 이해한 후에는 쿼리에 시간이 너무 오래 걸리는 부분에 집중하고 시간을 줄이기 위한 조치를 취할 수 있습니다.
설명 분석 사용
EXPLAIN
PostgreSQL에서는 주어진 명령문에 대한 계획만 생성합니다. ANALYZE
키워드를 추가하면 계획이 EXPLAIN
반환되고 쿼리가 실행되며 각 단계의 실제 런타임과 행 수가 표시됩니다. 이는 쿼리 성능을 분석하는 데 필수적입니다.
중요
사용할 때는 EXPLAIN ANALYZE
INSERT
UPDATE
, 및 에 주의하십시오DELETE
.
EXPLAIN 쿼리 계획을 읽는 방법
PostgreSQL 쿼리 플랜은 여러 노드로 구성된 트리 구조입니다. EXPLAIN
쿼리 계획은 데이터베이스 엔진이 쿼리를 실행하는 데 사용하는 단계를 보여줍니다. 쿼리 계획은 다음 정보를 제공합니다.
-
수행된 작업 유형 (예: 순차 스캔, 인덱스 스캔 또는 중첩 루프 조인)
-
수행 중인 작업을 설명하는 레이블 (예:
Seq Scan
Index Scan
Nested Loop
, 또는). -
쿼리로 처리 중인 테이블 또는 인덱스의 이름.
-
임의의 계산 단위의 예상 비용 및 처리된 행 수에 대한 정보가 포함된 비용 및 행 열
-
작업에 적용된 모든 필터의 필터 조건 (예: 조건).
where
-
단계를 시각적으로 표현한 것으로, 각 작업은 작업을 연결하는 노드와 화살표로 표시됩니다. 작업 순서는 왼쪽에서 오른쪽으로 표시되며 이전 작업은 이후 작업으로 이어집니다.
다음 스크린샷은 순차 스캔의 쿼리 계획을 보여줍니다.
예상 비용은 PostgreSQL이 쿼리에서 결과를 반환하는 데 32.60단위의 계산이 필요할 것으로 예상한다는 (cost=0.00..32.60 rows=2260 width=8)
의미입니다.
0.00
값은 이 노드가 작동을 시작할 수 있는 비용 (이 경우 쿼리 시작 시간) 입니다. rows
값은 순차 스캔이 반환할 예상 행 수입니다. width
값은 반환된 행의 예상 크기 (바이트) 입니다.
예제가 EXPLAIN
ANALYZE
옵션과 함께 표시되기 때문에 쿼리가 실행되었고 타이밍 정보가 캡처되었습니다. 결과는 다음을 (actual
time=0.120..0.121 rows=1 loops=1)
의미합니다.
-
순차 스캔을 한 번 실행했습니다 (
loops
값). -
스캔 결과 한 행이 반환되었습니다.
-
실제 시간은 0.12밀리초였습니다.