[친절한 SQL 튜닝]1.1 SQL 파싱과 최적화 - SQL 최적화 과정과 옵티마이저

Euiyeon Park·2025년 4월 14일

친절한 SQL 튜닝

목록 보기
1/13
post-thumbnail

1.1 SQL 파싱과 최적화

  • SQL은 구조적, 집합적, 선언적 질의 언어로
    결과 집합을 만들기 위한 과정은 절차적 - 프로시저가 필요
  • 프로시저를 만들어내는 DBMS 내부엔진
  • ✨ 프로시저란, 옵티마이저가 자동으로 만들어내는 실행 계획(처리 로직)

SQL 최적화

  • SQL 최적화란 SQL 실행 전 단계
  • (1) SQL 파싱 → (2) SQL 최적화 → (3) 로우 소스 생성 단계를 거침
  • (1) SQL 파싱
    • 파싱 트리 생성
    • Syntax 체크(문법 체크)
    • Semantic 체크(의미 체크)
  • (2) SQL 최적화
    • 옵티마이저가 담당
    • ✨ 옵티마이저는 데이터베이스 성능을 결정하는 가장 핵심적인 엔진
    • 다양한 정보를 바탕으로 실행경로 생성 및 선택 - 비용 기반, 규칙 기반
  • (3) 로우 소스 생성
  • 로우 소스 생성기가 담당
  • 옵티마이저가 선택한 경로를 실행 가능 코드 or 프로세스로 포맷팅

SQL 옵티마이저

  • 사용자의 SQL을 가장 효율적으로 실행하기 위해
    최적의 데이터 액세스 경로를 선택하는 DBMS 핵심 엔진
    • 어떻게 선택? 비용 산정 후 최저 비용 경로 선택
    • 그럼 비용이란? 예상 I/O 횟수 또는 예상 소요 시간
    • ❗어디까지나 예상치임을 주의하자, 실측치❌
  • ✨ 실행 계획 : 옵티마이저가 생성한 처리 절차를 표현

옵티마이저 힌트

  • 옵티마이저도 항상 완벽한 선택❌, 실수⭕
  • 통계 정보에 담을 수 없는 데이터 or 개발짬 이용해서 데이터 액세스 경로 수동 변경
  • 힌트 사용법 : /*+ INDEX(A 고객_PK)*/
  • ❗옵티마이저 힌트는 주석처리되므로 힌트를 잘못 처리해도 파악이 어려움 주의
  • 옵티마이저 힌트 사용법은 애플리케이션 환경에 따라 다름
    • 옵티마이저의 판단에 맡기는 경우 or 옵티마이저의 실수를 용납하지 않는 경우

ref. https://product.kyobobook.co.kr/detail/S000001975837

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글