반응형
SQL 최적화의 원리
옵티마이저(Optimizer)
- SQL개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것인지를 계획하게 된다. 즉, SQL 실행 계획(Execution Plan)을 수립하고 SQL을 실행한다.
- 옵티마이저는 SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다.
- 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라진다.
- 따라서 옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 한다.
옵티마이저 특징
- 데이터 딕셔너리에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다.
- 여러 개의 실행 계획 중에서 최저비용을 가지고 있는 계획을 선택해서 SQL을 실행한다.
옵티마이저의 필요성
- SQL개발자가 작성한 SQL문을 어떻게 실행하느냐에 따라 성능이 달라진다.
- 작은 집합을 먼저 읽어도 큰집합을 먼저 읽는것 과 동일한 결과가 나오게 된다.(AND 조건일 경우)
- 옵티마이저는 이러한 실행 계획을 수립하는 것이며, 만약 옵티마이저가 비효율적으로 실행계획을 수립하면, SQL개발자는 SQL을 개선해야한다. 이때 옵티마이저에게 실행 계획을 변경하도록 요청할 수가 있는데 이때 힌트(HINT)를 사용한다.
옵티마이저 실행 계획 확인
- 옵티마이저는 SQL 실행 계획을 PLAN_TABLE에 저장한다.
- 그래서 SQL개발자는 PLAN_TABLE을 조회해서 실행 계획을 확인할 수 있다.
반응형
'Certificate > SQLD' 카테고리의 다른 글
[SQLD]인덱스(Index) (0) | 2021.11.17 |
---|---|
[SQLD]옵티마이저 종류 (0) | 2021.11.16 |
[SQLD]SQL(Structured Query Language) 종류 (0) | 2021.11.13 |
[SQLD]관계형 데이터베이스(Relation Database) (0) | 2021.11.12 |
[SQLD]분산 데이터베이스 (0) | 2021.11.11 |