MySQL 서버는 MySQL엔진 + 스토리지 엔진으로 이루어져 있다. 이 중 MySQL엔진은 쿼리 파서, 전처리기, 옵티마이저, 쿼리 실행기 4가지로 나뉜다.
쿼리 파서는 요청된 SQL을 토큰을 기준으로 분리해 트리형태의 구조로 만들어 내는 작업을 한다.
파서에서 만들어진 트리를 기반으로 SQL 문장에 오류가 있는지 확인한다. 권한 이슈로 접근 할 수 없는 요청도 여기서 걸러진다.
옵티마이저는 SQL을 여러 실행계획 중 가장 저렴한 비용(cost)로 처리할 수 있도록 결정하는 역할을 한다.
쿼리 실행기는 옵티마이저에서 계획한 방법으로 쿼리를 실행하는 역할을 한다. 이 때 스토리지 엔진에 데이터를 읽기, 추가, 수정 작업을 요청하게 되며 이 요청 작업을 핸들러라고 한다.
마지막으로 요청이 모두 처리된 결과를 돌려주는 역할까지 쿼리 실행기가 한다.
한 줄평 : MySQL서버와 MySQL엔진 용어가 헷갈릴 수 있어 주의가 필요.