[ 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에 저장한다.
'[자격증] SQLD(SQL개발자) > ↘ SQL 기본 및 활용' 카테고리의 다른 글
[ SQLD ] SQL 최적화 기본 원리 - 3. 조인 수행 원리 (0) | 2020.05.30 |
---|---|
[ SQLD ] SQL 최적화 기본 원리 - 2. 인덱스 기본 (0) | 2020.05.30 |
[ SQLD ] SQL 활용 - 7. DCL (Data Control Language) (데이터 제어어) (0) | 2020.05.30 |
[ SQLD ] SQL 활용 - 6. 윈도우 함수 (0) | 2020.05.30 |
[ SQLD ] SQL 활용 - 5. 그룹 함수 (0) | 2020.05.30 |
댓글