자격증/SQLD
[개미의 걸음 SQLD 1과목] 옵티마이저
IT개미 데이터
2021. 1. 3. 07:07
728x90
옵티마이저[Optimizer]
SQL의 실행 계획을 수립하고 SQL을 실행하는 DBMS 소프트웨어
- 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할 수행
→ 동일한 결과가 나오더라도 SQL을 어떻게 실행하느냐에 따라 성능이 달라짐
→ 옵티마이저 실행 계획은 SQL성능에 중요한 역할을 함 - 최적의 실행 방법을 결정하는 방식에 따라 규칙기반 옵티마이저와 비용기반 옵티마이저로 나뉨
규칙 기반 옵티마이저[RBO, Rule Based Optimizer]
규칙(우선순위)를 가지고 실행계획을 생성하는 옵티마이저
- 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측 가능
- 규칙에 따라 우선순위를 정한 뒤, 이를 기반으로 실행계획을 생성
비용 기반 옵티마이저[CBO, Cost Based Optimizer]
테이블, 인덱스 등의 통계 정보를 활용해 가장 효율적인 SQL문 실행계획을 선택하는 옵티마이저
- 몇 개의 규칙만으로 현실의 모든 사항을 정확히 예측할 수 없다는 규칙기반 옵티마이저의 단점을 극복
- SQL문을 처리하는데 필요한 비용이 가장 적은 실행계획을 선택
→ "비용"이란 SQL문을 처리하기 위해 예상되는 소요시간 또는 자원 사용량을 의미 - 현재 대부분의 관계형 데이터베이스에서는 비용기반 옵티마이저만 제공
실행계획[Execution Plan]
SQL에서 요구한 사항을 처리하기 위한 실행 절차와 방법을 표현한 것
- 실행계획을 생성한다는 것은 SQL을 어떤 순서로 어떻게 실행할 지를 결정하는 작업
→ 실행계획이 달라도 실행 결과가 달라지는 것이 아님! - 예상 정보이므로 실제 처리 건수 정보는 알 수 없음!
→ 조인 기법, 조인 순서, 액세스 기법, 연산 등이 표현됨 - 실행 계획의 실행순서는 위에서 아래로, 안에서 밖으로 읽는다.
# 실행 계획의 실행순서 예
1. NESTED LOOPS
2. HASH JOIN
3. TABLE ACCESS (FULL) TAB1
4. TABLE ACCESS (FULL) TAB2
5. TABLE ACCESS (BY ROWID) TAB3
6. INDEX (UNIQUE SCAN) PK_TAB3
- "3→4→2→6→5→1" 실행순서를 가짐
728x90