CS자료/데이터베이스

[DB] 옵티마이저

뇌장하드 2022. 3. 19. 16:30
  • 옵티마이저란?
    • 가장 효율적인 방법으로 SQL을 처리할 경로를 생성해주는 DBMS의 핵심 엔진
    • 컴퓨터의 CPU처럼 DBMS는 옵티마이저가 있다.
    • 개발자가 SQL을 실행해도 바로 실행하는 것이 아닌 옵티마이저를 거쳐 계획을 여러 가지 세운 후 최적의 계획을 실행합니다.
    • 옵티마이저의 종류
      • 규칙 기반 옵티마이저
        • 일정한 규칙을 가지고 실행 계획을 생성
        • 우선순위가 높은 규칙이 적은 계획으로 작업을 수행
      • 비용 기반 옵티마이저
        • 대부분의 DBMS가 비용 기반 옵티마이저로 수행된다.
        • 규칙 기반 옵티마이저의 단점을 보완
        • SQL문을 처리할때 필요한 비용이 적은 계획을 선태
        • 비용 기반 옵티마이저의 구성 요소
          • 질의 변환기
          • 대안 계획 생성기
          • 비용 예측기

image

  • 옵티마이저 동작 방식
    • Parser : SQL 문장을 분석하여 문법 검사와 구성요소를 파악하고 이를 파싱 해서 파싱 트리 구성
    • Query Transformer : 파싱된 SQL을 보고 같은 결과를 도출하되, 실행 계획을 가지는 방법이 없는지 계획을 도출
    • Estimator : 통계정보를 딕셔너리로부터 수집하여 SQL을 실행할 때 드는 비용 계산
    • Plan Generator : 측정기를 통해 계산된 값들로 실행계획을 도출합니다.
    • Row-Source Generator : 옵티마이저가 생성한 계획을 SQL 엔진이 실행할 수 있도록 코드나 프로시저 형태로 변환
    • SQL Engine : SQL 실행

image

'CS자료 > 데이터베이스' 카테고리의 다른 글

[DB] 정규화  (0) 2022.03.19
[DB] 인덱스를 사용하는 이유  (0) 2022.03.19
[DB] 샤딩  (0) 2022.03.19
[DB] Replication  (0) 2022.03.19
[DB] ORM  (0) 2022.03.19