MySQL 쿼리 실행 구조를 간단하게 알아보자
데이터베이스
By Jeongmin Seo•4월 2일, 2024년
목차
MySQL 구조
1. Query Parser (쿼리 파서)
- 사용자가 보낸 SQL 쿼리를 구문 분석
- SQL 문장이 문법적으로 올바른지 검사 (예: SELECT, FROM 등의 키워드 확인)
- 파싱된 쿼리는 내부 트리(파스 트리) 형태로 변환됨
2. Preprocessor (프리프로세서)
- 파스 트리를 기반으로 쿼리 내 객체(테이블, 칼럼 등)의 존재 여부 확인
- 접근 권한 검사
- 이름 해석(name resolution) 수행
- 예외: 정의되지 않은 테이블이나 컬럼이 있을 경우 오류 발생
3. Optimizer (옵티마이저)
- 쿼리 실행 계획 수립 (어떤 인덱스를 사용할지, 조인 순서는 어떤지 등 결정)
- 비용 기반(cost-based) 옵티마이저 또는 규칙 기반(rule-based) 사용
- 가능한 여러 실행 계획 중 가장 효율적인 것을 선택
4. Execution Engine (실행 엔진)
- 옵티마이저에서 선택된 실행 계획을 따라 실제 쿼리를 수행
- 스토리지 엔진과 통신하며 데이터 접근
- 중간 결과를 메모리에서 처리하며 결과 생성
5. Storage Engine (스토리지 엔진)
- 실제 데이터가 저장되는 계층 (예: InnoDB, MyISAM 등)
- 데이터를 읽고 쓰는 역할을 수행
- 각 스토리지 엔진은 MySQL 서버와 독립적으로 작동 가능