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 |