본문 바로가기
[자격증] SQLD(SQL개발자)/↘ SQL 기본 및 활용

[ SQLD ] SQL 최적화 기본 원리 - 1. 옵티마이저와 실행계획

by 승큐리티 2020. 5. 30.


[ SQLD ] 

3. SQL 최적화 기본 원리

3-1. 옵티마이저와 실행계획



1. 옵티마이저
SQL을 실행 할 때 최적의 실행 방법을 결정하는 역할
똑같은 결과라도 효율적으로 실행하면 성능이 달라진다.


2. 옵티마이저 종류
2-1) 규칙기반 옵티마이저
옵티마이저를 결정 할 때 우선순위를 정해 놓은 규칙대로 실행계획을 생성하는 방법

우선순위 설명
1 Single row by rowid
(ROWID를 통해 하나의 행을 액세스)
2 Single row by cluster join
(cluster join을 통해 하나의 행을 액세스)
3 Single row by hash cluster key with unique or primary key
(유일한 인덱스나 기본키를 가진 해시 클러스트 키를 통해 하나의 행을 액세스)
4 Single row by unique or primary key
(유일한 인덱스나 기본키를 통해 하나의 행을 액세스)
5 Cluster join
(클러스트 조인)
6 Hash cluster key
(해시 클러스트 키)
7 Indexed cluster key
(인덱스형 클러스트 키)
8 Composite index
(복합 인덱스)
9 Single column index
(단일 칼럼 인덱스)
10 Bounded range search on indexed columns
(인덱스가 생성된 칼럼에 양쪽 한정범위 검색)
ex) BETWEEN , LIKE
11  Unbounded range search on indexed columns
(인덱스가 생성된 칼럼에 한쪽범위 검색)
ex) > , < , <= , >=
12 Sort merge join
(정렬병합 조인)
13 MAX or MIN of indexed column
(인덱스가 생성된 칼럼에서 MAX나 MIN 사용)
14 ORDER BY on indexed column
(인덱스가 생성된 칼럼에서 ORDER BY 사용)
15 Full table scan
(전체 테이블 스캔)

 

2-2) 비용기반 옵티마이저
옵티마이저를 결정 할 때 비용(소용시간, 자원 사용량)이 가장 적은 실행계획을 선택하는 방법
비용을 예측하기 위해서 다양한 객체 통계정보와 시스템 통계정보를 이용
통계정보가 없는 경우 정확한 비용 예측이 불가능 -> 비효율적인 실행계획 생성 -> 성능 저하


3. 실행계획 (Execution Plan)
SQL을 어떤 순서로 어떻게 실행할 지를 결정하는 작업
옵티마이저는 이러한 실행계획 중 최적의 실행계획을 생성한다.
실행계획은 PLAN_TABLE에 저장한다.




댓글