DB Query plan

Query plan

DB 실행게획은 DBMS 에서 쿼리를 실행하기 위해 선택되는 실행 전략을 의미한다.

실행 계획은 데이터베이스가 쿼리를 효율적으로 처리하기 위해 수행할 단계들의 순서를 나타내며, 쿼리 성능 최적화에 중요한 역할을 한다.

실행계획을 이해하고 분석이 가능하다면, 효율적으로 쿼리를 튜닝하고 성능을 개선할 수 있다.

아래는 주 요소들에 대해서 간단한 설명.

주요소

연산자(Operator)

연산자는 쿼리를 처리하기 위해 사용되는 기본 작업 단위이다. Scan, Join, 집합 연산(Set Operation) 등이 포함된다.

  • Table Scan: 테이블의 모든 행을 읽는다.

  • Index Scan: 인덱스를 사용해서 테이블의 특정 행을 읽는다.

  • Join: 두 개 이상의 테이블을 결합한다.

비용(Cost)

특정 연산을 수행하는데 필요한 예상 자원을 나타낸다.

여기에는 CPU 사용량, 디스크 I/O, 메모리 사용 등이 포함된다. 비용은 옵티마이저가 최적의 실행 계획을 선택하는데 중요한 기준이다.

카디널리티(Cardinality)

"집합의 크기" 라고 하는것보다 단어 그대로 카디널리티라고 많이들 부르는 듯 하다.

특정 연산 후 결과 집합의 예상 행 수를 나타낸다.

순서 (Order)

쿼리 실행시 연산이 수행되는 순서를 나타낸다. 이는 쿼리 성능에 영향을 미치는 중요한 요소이다.


실행계획 생성 과정

Parsing

SQL 쿼리가 파싱되어 구문 분석 트리로 변환된다. 여기서 쿼리의 문법을 체크한다.

Parser + Lexer 가 합쳐져있다고 생각하면 좋을 듯 하다.

Optimization

옵티마이저가 다양한 실행 계획을 생성하고, 그 중 가장 Cost 가 낮은 계획을 선택한다.

Execution

선택된 실행 게획에 따라 쿼리가 실제로 실행된다.


MySQL 에서는 EXPLAIN , PostgreSQL 에서는 EXPLAIN, ANALYZE 등을 사용해서 실행 계획, 실행 시간 등을 조회하고 분석해볼 수 있다.

실행 계획을 분석할 때에는 전체 비용, 사용된 인덱스, 조인 순서가 적절한지, 필터 조건이 알맞게 적용되고 있는지를 확인해야 한다.

Last updated