본문 바로가기

sql_tuning

Section4. SQL 실행 계획의 이해와 Hard Parsing, Soft Parsing의 차이

728x90
반응형

[출처: 오라클 성능 분석과 인스터스 튜닝 핵심 가이드]

SQL의 이해

  • 사용자 SQL은 Oracle 내부에서 상세 실행 계획으로 변경 

  • Parsing 이란?
    • 구문분석
    • 분해와 분석 후 목적에 맞춰 구조를 결정하는 것
    • 문장이 이루고 있는 구성 성분을 분해하고 분해 된 성분의 위계 관계를 분석하여 구조를 결정 하는 것.
    • 파싱은 컴파일의 일부로서 원시 프로그램의 명령문을 입력으로 받아들여서 구문을 해석 할 수 있는 단위와 여러 부분으로 분할해주는 역할을 함
    • 이러한 파서 역할을 하는 컴퓨터가 구문 트리(parse tree)로 재구성 하는 구문 분석 과정 

 

Optimizer에 영향을 미치는 요소

  • 사용컬럼, 연산자 형태
    • ex> =, Like, In, Is Not Null, NVL()
  • SQL 형태
    • ex> Select * from Tab Where...
  • 인덱스 및 Segment 구조
    • 파티션인가 세그먼트인가..
  • 통계 정보
  • 옵티마이저 설정
    • ALL_ROWS, FIRST_ROWS
  • DBMS 버전
    • 11G, 12C, 18C, 19C ...

 

실행계획 생성을 위한 고려 요소

  • 최종 결정 된 실행 계획은 수많은 선택의 요소를 상호 Cost 비교하여 가장 최적의 결과 값으로 선택된 것임.
  • 이를 위해 많은 CPU 및 기타 자원 소모
  • 특히 OLTP와 같은 초당 수십~수백 개의 SQL이 동시에 들어올 경우 반드시 SQL 및 실행계획의 공유가 필요함

 

Optimizer SQL 실행계획 수행 절차

  • [1]
    • 호출된 SQL은 데이터 딕셔너리를 참조하여 Parsing옵티마이저가 좀 더 편하게 이해 할 수 있는 형태로 쿼리가 일차 변환 됨. 
    • 옵티마이저는 변환 된 쿼리를 기반으로 잠재적인 일차 실행계획들을 생성
  • [2]
    • 데이터 딕셔너리에서 여러 통계정보(데이터의 분포도, 테이블 저장구조, 인덱스 구조, 파티션 형태, 비교 연산자) 등을 감안하여 각 실행계획의 비용을 계산
  • [3]
    • 실행계획들의 비용을 기반하여 빠르게 가장 최소의 비용을 가진 실행계획을 선택 

728x90
반응형