상세 컨텐츠

본문 제목

[개미의 걸음 SQLD 1과목] 옵티마이저

자격증/SQLD

by IT개미 데이터 2021. 1. 3. 07:07

본문

728x90

옵티마이저[Optimizer]

출처 : DBGUIDE.NET

SQL의 실행 계획을 수립하고 SQL을 실행하는 DBMS 소프트웨어

  • 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할 수행
        → 동일한 결과가 나오더라도 SQL을 어떻게 실행하느냐에 따라 성능이 달라짐
        → 옵티마이저 실행 계획은 SQL성능에 중요한 역할을 함
  • 최적의 실행 방법을 결정하는 방식에 따라 규칙기반 옵티마이저와 비용기반 옵티마이저로 나뉨

 

규칙 기반 옵티마이저[RBO, Rule Based Optimizer]

출처 : DBGUIDE.NET

규칙(우선순위)를 가지고 실행계획을 생성하는 옵티마이저

  • 실행계획을 생성하는 규칙을 이해하면 누구나 실행계획을 비교적 쉽게 예측 가능
  • 규칙에 따라 우선순위를 정한 뒤, 이를 기반으로 실행계획을 생성

 

비용 기반 옵티마이저[CBO, Cost Based Optimizer]

출처 : DBGUIDE.NET

테이블, 인덱스 등의 통계 정보를 활용해 가장 효율적인 SQL문 실행계획을 선택하는 옵티마이저

  • 몇 개의 규칙만으로 현실의 모든 사항을 정확히 예측할 수 없다는 규칙기반 옵티마이저의 단점을 극복
  • SQL문을 처리하는데 필요한 비용이 가장 적은 실행계획을 선택
        → "비용"이란 SQL문을 처리하기 위해 예상되는 소요시간 또는 자원 사용량을 의미
  • 현재 대부분의 관계형 데이터베이스에서는 비용기반 옵티마이저만 제공

 

 

실행계획[Execution Plan]

출처 : DBGUIDE.NET

SQL에서 요구한 사항을 처리하기 위한 실행 절차와 방법을 표현한 것

  • 실행계획을 생성한다는 것은 SQL을 어떤 순서로 어떻게 실행할 지를 결정하는 작업
        → 실행계획이 달라도 실행 결과가 달라지는 것이 아님!
  • 예상 정보이므로 실제 처리 건수 정보는 알 수 없음!
        → 조인 기법, 조인 순서, 액세스 기법, 연산 등이 표현됨
  • 실행 계획의 실행순서는 위에서 아래로, 안에서 밖으로 읽는다.

# 실행 계획의 실행순서 예

1. NESTED LOOPS
2.     HASH JOIN
3.        TABLE ACCESS (FULL) TAB1
4.        TABLE ACCESS (FULL) TAB2
5.     TABLE ACCESS (BY ROWID) TAB3
6.        INDEX (UNIQUE SCAN) PK_TAB3
  • "3→4→2→6→5→1" 실행순서를 가짐

 

 

 

728x90

관련글 더보기

댓글 영역