1. 개요


1.1 쿼리 실행 절차

MySQL 서버에서 쿼리가 실행되는 과정은 크게 세 단계로 나눌 수 있다.

  1. 요청 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리(파스 트리)한다.
  2. SQL 의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블로부터 읽고 어떤 인덱스를 이용해 테이블을 읽을 지 선택한다.
  3. 두 번째 단계에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다.

두 번째 단계는 첫 번째에서 분리된 파스트리를 참조하면서 다음을 수행한다.

두 번째 단계는 **“최적화 및 실행 계획 수립” 단계이며, MySQL 서버의 “옵티마이저”에서 처리한다. 또한 두 번째 단계가 완려되면 쿼리의 “실행 계획”**이 만들어진다.

세 번째 단계는 실행 계획대로 스토리지 엔진에 레코드를 읽어오도록 요청하고, MySQL 엔진에서는 받은 레코드를 조인하거나 정렬하는 작업을 수행한다.

첫 번째 두 번째 작업은 MySQL 엔진에서, 세 번째 작업은 스토리지 엔진과 MySQL 엔진이 동시에 참여한다.

1.2 옵티마이저 종류

데이터베이스 서버에서 두뇌와 같은 역할을 담당하는 옵티마이저는 다음과 같은 종류로 나뉜다