알파돈

[DB] SQL 파싱 이란? 본문

DB/Oracle

[DB] SQL 파싱 이란?

돈글이 2024. 3. 19. 22:51

SQL의 처리과정은 아래와 같다

  1. SQL 작성을 하면 SQL Parser 은 SQL 파싱을 진행 한다.
  2. 옵티마이저가 SQL 최적화를 진행 한다.
  3. Row-Source Generation가 옵티마이저에게 전달받은 최적을 실행 계획을 받아 코드 또는 프로시저 형태로 포맷팅
  4. 실행 

 

SQL Parser

  • 개발자가 작성한 SQL을 이루는 구성요소를 분석하고 파싱 트리를 만든다.
  • Syntax 체크 : 문법 검사
  • Symantic 체크 : 오브젝트의 참조 및 존재 여부 검사
  • Shared Pool에 캐싱되어 있는 SQL 커서인지 확인 : 해시 알고리즘 사용

 

SQL Optimizer

  • Query Transformer : SQL을 최적화 하기 쉬운 형태로 변환
  • Plan Genrator : SQL 실행 계획을 생성
  • Estimarot : 실행 계획의 비용을 계산

 

Row-Source Generation

  • 옵티마이저에게 전달받은 최적을 실행 계획을 받아 코드 또는 프로시저 형태로 포맷팅
  • 최종 결과집합을 생성하는 제어구조

 

SQL 파싱의 종류

  • Soft Parsing : Shared Pool에서 SQL 실행 계획을 발견하고 실행

SQL 작성 -> SQL 파싱 -> Shared Pool 캐시 존재 -> 발견한 실행계획으로 실행

  • Hard Parsing : SQL이 캐싱돼 있지 않아 최적화 과정을 톤한 실행계획 생성

SQL 작성 -> SQL 파싱 -> Shared Pool 캐시 미존재 -> 최적화 -> 로우소스 생성 ->  실행

 

실행 과정을 보아도 Hard Parsing이 더많은 과정을 거치기때문에 더 느릴 수 밖에 없다.

'DB > Oracle' 카테고리의 다른 글

[DB] 옵티마이저(optimizer)란 무엇인가?  (1) 2024.03.18
Oracle Error코드 종류  (0) 2021.07.16
Comments