MySQL 쿼리 실행 과정

s2ul3·2022년 12월 21일
0

1. 쿼리 캐시 (Query Cache)

  • SQL 실행 결과를 메모리에 캐싱하는 역할
  • 동일 SQL 실행 시, 이전 결과 즉시 반환
  • 테이블의 데이터가 변경되면 캐싱된 데이터 삭제 필요 --> 동시 처리 성능 저하
    --> MySQL 8.0부터는 쿼리 캐시가 완전히 제거됨.

2. 쿼리 파서 (Query Parser)

  • SQL 문장을 토큰으로 쪼개어 트리로 만듦. --> 만들어진 트리를 parse tree 라고 부름.
  • 이 과정에서 쿼리 문장의 기본 문법 오류를 체크

3. 전처리기 (Preprocessor)

  • Parse tree를 기반으로 SQL의 문장 구조 체크
  • Parse tree의 토큰이 유효한지 체크
  • 토큰을 하나씩 검사하며, 토큰에 해당하는 테이블 이름이나 컬럼등이 실제로 존재하는지 체크, 접근 권한에 대해서도 체크

4. 옵티마이저 (Optimizer)

  • SQL 실행을 최적화해서 실행 계획을 수립
  • 규칙 기반 최적화
    • 옵티마이저에 내장된 우선순위에 따라 점수를 매겨 실행 계획 수립
  • 비용 기반 최적화
    • 작업의 비용과 대상 테이블의 통계 정보를 활용하여 실행 계획 수립

5. 쿼리 실행 엔진 (Query execution engine)

  • 옵티마이저가 만든 실행 계획대로 스토리지 엔진을 호출해서 레코드를 읽고 씀

6. 스토리지 엔진 (Storage engines)

  • 쿼리 실행 엔진이 요청하는 대로 데이터를 디스크로 저장하거나 읽음
  • 핸들러 API에 의해 동작됨
  • 핸들러 라고도 부름
  • InnoDB, MyISAM
  • MySQL 8.0부터는 InnoDB 사용
profile
statistics & computer science

0개의 댓글