반응형

MySQL/MariaDB 아키텍처 – 쿼리 실행 구조

 

  • Version : Mariadb 5.5.4.2-WinX64

 

MySQL / MariaDB 쿼리 실행 구조에 대해서 알아본다. 쿼리 실행 구조는 타 DB와 거의 동일하다.

 

[쿼리 실행 순서]

  1. 클라이언트는 서버로 SQL 문을 전송 한다.
  2. 서버는 쿼리 캐시를 확인하여 캐시에 저장된 데이터가 있다면 저장된 결과를 반환한다. 그렇지 않으면 다음 단계로 통과 시킨다.
  3. 서버는 구분 분석 및 전처리기에서 쿼리에 구조적 문제가 없는지 확인하고 옵티마이저는 SQL 쿼리를 최적화 한다.
  4. 쿼리 실행 엔진은 스토리지 엔진 API를 호출하여 계획을 실행 한다.
  5. 서버는 클라이언트에게 결과를 반환한다.

 

[Parser]

파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(SQL엔진이 인식할 수 있는 형태)으로 분리해 트리 형태의 구조로 만드는 작업을 의미한다. 쿼리 문장의 기본 문법 오류는 이 과정에서 발견되어 사용자에게 오류 메시지를 전달하게 된다.

 

[Preprocessor]

파서 과장에서 만들어진 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지 확인한다. 각 토큰을 테이블 이름이나 칼럼 이름 또는 내장 함수와 같은 개체를 매핑하여 해당 객체의 존재 여부와 객체의 접근 권한등을 확인하는 과정을 수행한다. 실제 존재하지 않거나 권한이 없는 개체의 토큰은 이 단계에서 걸러진다.

 

[Optimizer]

옵티마이저는 요청된 쿼리문장을 어떻게 처리할지를 결정하는 두뇌 역할을 한다. 옵티마이저는 가장 적은 비용으로 가장 빠르게 처리할 수 있는 방법을 결정하기 위해 다양한 통계 자료를 활용한다. 옵티마이저의 선택에 따라서 쿼리 성능에 영향을 미치므로 특성을 잘 이해할 필요가 있다.

 

[Query execution engine]

옵티마이저가 최적의 실행 계획을 결정하면 이를 직접 실행하는 부분을 담당한다. 스토리지 엔진의 API를 호출한다.

 

 

[참고자료]

http://sqlmvp.kr/140188321707

  • SQL Server 쿼리 처리 아키텍처_실행 계획 캐싱 및 다시 사용

http://sqlmvp.kr/140188765472

 

 

2015-07-01 / 강성욱 / http://sqlmvp.kr

 

 

MariaDB, MySQL, MySQL 쿼리 아키텍처, MariaDB 쿼리 아키텍처, MySQL Query Execution, MariaDB 쿼리 실행

반응형

+ Recent posts