IT/DB

[DB] Optimizer

어린이개발자 2025. 1. 20. 20:40

SQL 쿼리 성능 개선을 위한 방법이 여럿 있는데, 이 중 핵심적인 역할을 담당하는 구성 요소 중 하나인 Optimizer 에 대해 정리하고자 한다. 

 

1. 역할

- SQL 쿼리 분석

- 다양한 실행 경로를 비교하여 가장 효율적인 실행 계획 선택

- 리소스 최적화

- 결과 반환 속도 개선

 

2. 종류

1) 규칙 기반 옵티마이저

- 단순한 구조를 가지며, 우선순위 명확

 

2) 비용 기반 옵티마이저

- 데이터베이스의 통계 정보를 활용하여 실행 계획의 비용(ex. I/O, CPU 사용량 등) 계산

- 최신 데이터베이스 시스템에서 주로 사용

 

3) 힙 옵티마이저

- 특정한 경험적 규칙을 활용하여 실행 계획 생성

- 주로 간단한 쿼리에서 사용

 

3. 주요 요소

- 통계 정보

  > 테이블 크기, 인덱스 존재 여부, 컬럼 분포, 데이터 밀도 등

- 인덱스

- 조인 전략

  > Nested Loop Join, Hash Join, Merge Join 등

- 쿼리 힌트

 

4. 실행 계획 (쿼리가 수행될 방법을 나타내는 상세한 설명)

- 연산 방식

  > 테이블 스캔, 인덱스 스캔, 인덱스 범위 스캔 등

- 조인 순서

- WHERE 절에 사용된 조건

- ORDER BY, GROUP BY 처리 방식

 

5. 한계

- 잘못된 통계 정보로 인해 부적절한 실행 계획 생성될 수 있음

  > 정기적으로 통계 정보 갱신 필요

- 쿼리 구조가 지나치게 복잡하거나 비효율적인 경우 성능 저하 발생할 수 있음

  > 쿼리 최적화, 힌트 사용, 인덱스 최적화 등으로 해결

'IT > DB' 카테고리의 다른 글

[DB] SQL vs. NoSQL  (0) 2025.01.20
[DB] Sharding  (1) 2025.01.15
[MySQL] GROUP BY 사용법  (0) 2024.03.09
[MySQL] JSON_TABLE  (0) 2023.09.14
SQLD 내용 정리 4  (0) 2021.04.11