TIL

9.1 개요

실행 계획을 이해할 수 있어야 불합리한 부분을 찾아내고 더 최적화된 방법으로 실행 계획을 유도할 수 있다.

9.1.1 쿼리 실행 절차

MySQL 서버에서 쿼리가 실행되는 과정

  1. 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리한다. (파스 트리)
    1. SQL 파싱 단계라고 하며 SQL 파서 모듈로 처리한다.
  2. SQL의 파싱 정보(파스 트리)를 확인하면서 어떤 테이블로부터 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택한다.
    1. 최적화 및 실행 계획 수립 단계로 옵티마이저가 처리한다.
    2. 대표적인 작업
      1. 불필요한 조건 제거 및 복잡한 연산 단순화
      2. 여러 테이블의 조인이 있는 경우 테이블 읽는 순서 결정
      3. 각 테이블 사용 조건과 통계 정보를 통해 사용할 인덱스 결정
      4. 가져온 레코드를 임시 테이블에 넣고 다시 한 번 가공해야 하는지 결정
  3. 2단계에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져온다.

9.1.2 옵티마이저 종류