본문 바로가기
DB/DB

SQL 파싱과 최적화

by 은세라 2022. 4. 26.
  • 옵티마이저가 SQL을 어떻게 처리하는지
  • 서버 프로세스는 데이터를 어떻게 읽고 저장하는지

SQL : Structured Query Language

구조적 질의 언어 (↔  절차적 프로그래밍)

SQL 최적화 : DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정

SQL 실행 전 최적화 과정

  1. SQL 파싱
    • 수행 주체 : SQL 파서 (Parser)
    • 파싱 트리 생성 : SQL문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성
    • Syntax 체크 : 문법적 오류가 없는지 확인 (ex. 사용할 수 없는 키워드를 사용했거나 순서가 바르지 않거나 누락된 키워드가 있는지 확인)
    • Semantic 체크 : 의미상 오류가 없는지 확인 (ex. 존재하지 않는 테이블 또는 컬럼을 사용했는지, 사용한 오브젝트에 대한 권한이 있는지 확인)
  2. SQL 최적화
    • 수행 주체 : 옵티마이저(Optimizer)
    • 미리 수집한 시스템 및 오브젝트 통계정보를 바탕으로 다양한 실행경로를 생성, 비교한 후 가장 효율적인 하나를 선택함
  3. 로우 소스 생성
    • 실제 실행 가능한 소스 또는 프로시저 형태로 포멧팅
    • 수행 주체 : 로우 소스 생성기 (Raw-Source Generator)

SQL 옵티마이저란

최적의 데이터 엑세스 경로를 선택하는 DBMS의 핵심 엔진

(서버 프로세스가 가진 기능 중 하나로 이해)

실행계획(Execution Plan)으로 SQL 실행경로 미리보기 가능

비용 : 쿼리를 수행하는 동안 발생할 것으로 예상하는 I/O 횟수 또는 예상 소요시간

옵티마이저 힌트

개발자가 직접 더 효율적인 엑세스 경로로 변경

select /*+ INDEX(A 고객_PK) */
 고객명, 연락처, 주소, 가입일시
from 고객 A
where 고객ID = '000000'

힌트 사용법은 생략

댓글