# SQL 문 수행 절차

![출처: 업무에 바로 쓰는 SQL 튜닝](https://469240294-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmUhmp4iHOU0Crksy87Kh%2Fuploads%2FuSrvQO5rEoCjG9gohN3U%2Fimage.png?alt=media\&token=9bf02d11-38b8-4074-b32c-7353b0230142)

#### 파서

* SQL을 최소 단위인 토큰으로 분리하고 트리 구조로 만듭니다.
* 기본 문법 오류를 검증합니다.

#### 전처리기

* 파서 트리를 기반으로 구조적인 문제를 확인합니다.
  * 권한, 존재 여부 등

#### 옵티마이저

* 쿼리 변환, 비용 최적화, 실행 계획 수립
* 옵티마이저가 더 나은 선택을 할 수 있도록 유도할 수 있어야 한다. hint

#### 엔진 실행기 (실행 엔진)

* 실행 엔진은 핸들러에게 임시 테이블을 만들라고 요청
* 다시 실행 엔진 WHERE 절에 일치하는 레코드들을 읽어오라고 핸들러에게 요청
* 읽어온 레코드들을 1번에서 준비한 임시 테이블에 저장하라고 다시 핸들러에게 요청
* 데이터가 준비된 임시 테이블에서 필요한 방식으로 데이터를 읽어 오라고 핸들러에게 다시 요청
* 최종적으로 실행 엔진은 결과를 사용자나 다른 모듈에 넘김

#### 스토리지 엔진 (핸들러)

* 실행 엔진의 요청에 따라 데이터를 디스크로 저장하고 디스크로부터 읽어오는 역할을 담당한다.
