[SQLD] 옵티마이저

younghyun·2023년 6월 8일
0

SQLD

목록 보기
15/18

옵티마이저

사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할을 수행

규칙기반 옵티마이저

규칙(우선 순위)을 가지고 실행계획을 생성
이용 가능한 인덱스 유무와 (유일, 비유일, 단일, 복합 인덱스)종류
SQL문에서 사용하는 연산자(=, <, <>, LIKE, BETWEEN 등)의 종류
SQL문에서 참조하는 객체(힙 테이블, 클러스터 테이블 등)의 종류

  • 가장 높은 우선순위는 ROWID를 활용하여 엑세스하는 방법이고, 제일 낮은 우선순위는 전체 테이블 스캔이다.

비용기반 옵티마이저 (CBO)

대안 계획 생성기에 의해서 생성된 대안 계획의 비용을 예측하는 모듈
통계정보, DBMS 버전, DBMS 설정 정보 등의 차이로 인해 동일 SQL문도 서로 다른 실행계획이 생성

실행 계획

옵티마이저는 다양한 처리 방법들 중에서 가장 효율적인 방법을 찾아줌
실행계획을 구성하는 요소는 조인 순서, 조인 기법, 액세스 기법, 최적화 정보, 연산 등

SQL 처리 흐름도

SQL 실행 계획을 시각화해서 표현한 것이다.

[131번]
동일 SQL문에 대해 실행계획이 다르다고 해서 실행 결과가 달라지지 않는다.

[133번]
SQL 처리 흐름도는 성능적인 측면도 포현할 수 있다.
인덱스 스캔 및 전체 테이블 스캔 등의 엑세스 기법 모두 표현 가능하다.

profile
🌱 주니어 백엔드 개발자입니당

0개의 댓글