MySQL/MariaDB 아키텍처 – 쿼리 실행 구조
-
Version : Mariadb 5.5.4.2-WinX64
MySQL / MariaDB 쿼리 실행 구조에 대해서 알아본다. 쿼리 실행 구조는 타 DB와 거의 동일하다.
[쿼리 실행 순서]
-
클라이언트는 서버로 SQL 문을 전송 한다.
-
서버는 쿼리 캐시를 확인하여 캐시에 저장된 데이터가 있다면 저장된 결과를 반환한다. 그렇지 않으면 다음 단계로 통과 시킨다.
-
서버는 구분 분석 및 전처리기에서 쿼리에 구조적 문제가 없는지 확인하고 옵티마이저는 SQL 쿼리를 최적화 한다.
-
쿼리 실행 엔진은 스토리지 엔진 API를 호출하여 계획을 실행 한다.
-
서버는 클라이언트에게 결과를 반환한다.
[Parser]
파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(SQL엔진이 인식할 수 있는 형태)으로 분리해 트리 형태의 구조로 만드는 작업을 의미한다. 쿼리 문장의 기본 문법 오류는 이 과정에서 발견되어 사용자에게 오류 메시지를 전달하게 된다.
[Preprocessor]
파서 과장에서 만들어진 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지 확인한다. 각 토큰을 테이블 이름이나 칼럼 이름 또는 내장 함수와 같은 개체를 매핑하여 해당 객체의 존재 여부와 객체의 접근 권한등을 확인하는 과정을 수행한다. 실제 존재하지 않거나 권한이 없는 개체의 토큰은 이 단계에서 걸러진다.
[Optimizer]
옵티마이저는 요청된 쿼리문장을 어떻게 처리할지를 결정하는 두뇌 역할을 한다. 옵티마이저는 가장 적은 비용으로 가장 빠르게 처리할 수 있는 방법을 결정하기 위해 다양한 통계 자료를 활용한다. 옵티마이저의 선택에 따라서 쿼리 성능에 영향을 미치므로 특성을 잘 이해할 필요가 있다.
[Query execution engine]
옵티마이저가 최적의 실행 계획을 결정하면 이를 직접 실행하는 부분을 담당한다. 스토리지 엔진의 API를 호출한다.
[참고자료]
-
RealMySQL(위키북스)
-
SQL Server 쿼리 처리 아키텍처 _ SQL 문 처리 (1/4) – SQL 문 최적화 및 Worktables
-
SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용
2015-07-01 / 강성욱 / http://sqlmvp.kr
MariaDB, MySQL, MySQL 쿼리 아키텍처, MariaDB 쿼리 아키텍처, MySQL Query Execution, MariaDB 쿼리 실행
'MySQL, MariaDB' 카테고리의 다른 글
MySQL/MariaDB 아키텍처 – 쿼리 캐시(Query Cache) (0) | 2015.07.22 |
---|---|
MySQL/MariaDB 백업 & 복원 - mysqldump (0) | 2015.07.16 |
MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조 (0) | 2015.07.16 |
MySQL/MariaDB 아키텍처 – 스레딩 구조 (0) | 2015.07.16 |
MySQL/MariaDB 아키텍처 – Overview (0) | 2015.07.16 |