개발공부/real MySQL

[MySQL] 쿼리 실행 구조

코푸딩 2024. 7. 8. 20:15
728x90

쿼리 실행 구조

  1. 쿼리 파서
  2. 전처리기
  3. 옵티마이저
  4. 쿼리 실행기
  5.  핸들러

1 ~ 4는 MySQL 엔진(실행 엔진) 영역이고 5는 스토리지 엔진 영역이다.

 

1. 쿼리 파서

쿼리 파서는 요청 받은 쿼리 문장을 *토큰으로 분리해 트리 형태 구조로 만들어내는 작업을 수행한다.

*토큰 : MySQL이 인식할 수 있는 최소 단위

기본적인 문법 오류가 있을 경우 쿼리 파서가 확인 후 오류 메시지를 반환한다.

 

2. 전처리기

쿼리 파서가 만든 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점 여부를 확인한다.

각 토근에 테이블 이름, 칼럼 이름, 내장 함수 같은 개체를 매핑해 해당 객체의 존재 여부와 객체 접근 권한 등을 확인한다.

존재하지 않거나 접근 권한이 없는 개체의 토큰이 걸러지는 단계이다.

 

3. 옵티마이저

쿼리를 어떻게 가장 저렴한 비용으로 가장 빠르게 처리할지 결정하는 역할을 담당한다.

 

4. 실행 엔진(쿼리 실행기)

옵티마이저가 결정한대로 각 핸들러에게 작업을 요청한다.

 

5. 핸들러(스토리지 엔진)

실행 엔진의 요청에 따라 디스크에 쓰기/읽기를 실행한다.

 

728x90