EXPLAIN 쿼리 플랜 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

EXPLAIN 쿼리 플랜

PostgreSQL은 쿼리 실행 방법에 대한 세부 정보가 포함된 쿼리 계획을 반환하기 위한 EXPLAIN ANALYZE 및 옵션을 제공합니다EXPLAIN.

EXPLAIN 명령문

EXPLAIN 명령문은 PostgreSQL 플래너가 지정된 명령문에 대해 생성한 쿼리 계획을 반환합니다. 쿼리 계획에는 다음이 표시됩니다.

  • 명령문과 관련된 테이블을 스캔하는 방법 (예: 인덱스 스캔 또는 순차 스캔)

  • 여러 테이블을 조인하는 방법 (예: 해시 조인, 병합 조인 또는 중첩 루프 조인)

쿼리 성능을 개선하려면 계획을 이해하는 것이 중요합니다. 계획을 이해한 후에는 쿼리에 시간이 너무 오래 걸리는 부분에 집중하고 시간을 줄이기 위한 조치를 취할 수 있습니다.

설명 분석 사용

EXPLAINPostgreSQL에서는 주어진 명령문에 대한 계획만 생성합니다. ANALYZE키워드를 추가하면 계획이 EXPLAIN 반환되고 쿼리가 실행되며 각 단계의 실제 런타임과 행 수가 표시됩니다. 이는 쿼리 성능을 분석하는 데 필수적입니다.

중요

사용할 때는 EXPLAIN ANALYZE INSERTUPDATE, 및 에 주의하십시오DELETE.

EXPLAIN 쿼리 계획을 읽는 방법

PostgreSQL 쿼리 플랜은 여러 노드로 구성된 트리 구조입니다. EXPLAIN쿼리 계획은 데이터베이스 엔진이 쿼리를 실행하는 데 사용하는 단계를 보여줍니다. 쿼리 계획은 다음 정보를 제공합니다.

  • 수행된 작업 유형 (예: 순차 스캔, 인덱스 스캔 또는 중첩 루프 조인)

  • 수행 중인 작업을 설명하는 레이블 (예: Seq Scan Index ScanNested Loop, 또는).

  • 쿼리로 처리 중인 테이블 또는 인덱스의 이름.

  • 임의의 계산 단위의 예상 비용 및 처리된 행 수에 대한 정보가 포함된 비용 및 행 열

  • 작업에 적용된 모든 필터의 필터 조건 (예: 조건). where

  • 단계를 시각적으로 표현한 것으로, 각 작업은 작업을 연결하는 노드와 화살표로 표시됩니다. 작업 순서는 왼쪽에서 오른쪽으로 표시되며 이전 작업은 이후 작업으로 이어집니다.

다음 스크린샷은 순차 스캔의 쿼리 계획을 보여줍니다.

PgAdmin의 데이터 출력 탭에 쿼리 계획이 표시됩니다.

예상 비용은 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밀리초였습니다.