10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다
옵티마이저 (Optimizer)
- 옵티마이저란?
- SQL 개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것 인지를 계획하게 된다
- SQL 실행 계획 (Execution Plan)을 수리합하고 SQL 을 실행한다
- 옵티마이저는 SQL의 실행 계획을 수립하고 SQL 을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다
- 동일한 결과가 나오는 SQL 도 어떻게 실행하느냐에 따라서 성능이 달라지기에, SQL 성능에 옵티마이저는
아주 중요한 역할을 한다
옵티마이저 특징
- 옵티마이저는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는
비용을 산정한다
- 옵티마이저는 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 선택해서 SQL 을 실행한다
( 예시로 JOIN 을 줄 때 가장왼쪽이 큰 테이블 오른쪽으로 갈 수록 작은 테이블 순으로 가야 속도가 빠르게 나오는데, 옵티마이저가 순서 정리가 되있지 않아도 알아서 최저 비용을 계획하여 실행한다 )
옵티마이저의 필요성
- SQL 개발자가 작성한 SQL 문을 어떻게 실행하느냐에 따라 성능이 달라진다
(때문에 최적의 실행 계획을 관리해줌으로써 일반적인 성능을 보장해줄 수 있다)
- 이로써 개발자가 SQL 문을 잘 못 짜도 성능은 보장받을 수 있게 된다.
옵티마이저 실행 방법
1. 개발자가 SQL 을 실행하면 파싱(Parshing)을 실행해서 SQL의 문법 검사 및 구문 분석을 수행한다
2. 구문 분석이 완료되면, 옵티마이저가 규칙 기반 혹은 비용 기반으로 실행 계획을 수립한다
3. 실행 수립이 완료되면, 최종적으로 SQL을 실행하고, 실행이 완료되면 데이터를 인출 (Fetch) 한다
옵티마이저 엔진
- 규칙 기반 옵티마이저 (Rule Base Optimizer)는 실행 계획을 수립할 때, 15개의 우선 순위를 기준으로 실행 계획을 수립한다
- 최신 Oracle 버전은 규칙 기반 옵티마이저보다 비용 기반 옵티마이저를 기본적으로 사용한다
- /** Rule */ 를 사용해서 옵티마이저에서 규칙 기반 옵티마이저로 실행하도록 알려준다
참고
https://velog.io/@yewon-july/Optimizer
'∞. 기술 면접 > 4. 데이터베이스' 카테고리의 다른 글
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning) (0) | 2021.10.18 |
---|---|
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication) (0) | 2021.10.18 |
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장 (0) | 2021.10.17 |
07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement (0) | 2021.10.17 |
06. 기술면접 - 데이터베이스 - 인덱스 (Index) (0) | 2021.10.17 |
댓글
이 글 공유하기
다른 글
-
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)
12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)
2021.10.18 -
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)
2021.10.18 -
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장
2021.10.17 -
07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement
07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement
2021.10.17