질의 처리기

SQL은 바로 저장소로 가지 않고, 문장 → 구조 → 계획 → 결과로 바뀝니다.

핵심은 세 모듈이 서로 다른 질문을 맡는다는 점입니다. 파서는 문법을 확인하고, 옵티마이저는 가장 싼 경로를 고르며, 실행 엔진은 그 계획대로 저장 시스템에 실제 읽기 요청을 보냅니다.

입력

SQL 문장

SELECT name
FROM users
WHERE age > 30;
사용자는 원하는 결과만 선언적으로 적습니다.
중간 구조

파싱 트리

SELECT
├─ FROM users
└─ WHERE age > 30
문장이 DBMS가 해석할 수 있는 구조로 바뀝니다.
실행 지시서

실행 계획

Index Scan users_age_idx
Filter age > 30
Project name
같은 SQL이라도 어떤 경로를 고르느냐가 성능을 크게 바꿉니다.
출력

결과 집합

name
----
Kim
Lee
이 단계에서만 저장 시스템과 맞닿아 실제 데이터 접근이 일어납니다.
왜 이 순서인가
정확성 검사비용 기반 선택, 실제 I/O 실행을 분리해야 DBMS가 잘못된 SQL을 초기에 걸러내고, 같은 요청도 더 빠른 접근 경로를 골라, 마지막에만 저장 시스템에 부담을 주게 됩니다.