ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL 쿼리 실행 구조
    Technique/RDBMS 2016. 4. 10. 18:21
    반응형



    - 파서

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


    - 전처리기

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


    - 옵티마이저

    옵티마이저란 사용자의 요청으로 들어온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지 결정하는 역할을 담당하는데, DBMS의 두뇌에 해당한다고 볼 수 있다. 


    - 실행엔진

    옵티마이저가 두뇌라면 샐행 엔진과 핸들러는 손과 발에 비유할 수 있다. 실행 엔진이 하는 일을 좀 더 쉽게 이해 할 수 있게 간단하게 예를 들어서 살펴보자. 옵티마이저가 GROUP BY를 처리하기 위해 임시 테이블을 사용하기로 결졍했다고 보자.


    1. 실행 엔진은 핸들러에게 임시 테이블을 만들라고 요청

    2. 다시 실행 엔진은 WHERE절에 일치하는 레코드를 읽어 오라고 핸들러에게 요청

    3. 읽어온 레코드들을 1번에서 준비한 임시 테이블로 저장하라고 다시 핸들러에게 요청

    4. 데이터가 준비된 임시 테이블에서 필요한 방식으로 데이터를 읽어 오라고 핸들러에게 다시 요청

    5. 최종적으로 실행 엔진은 결과를 사용자나 다른 모듈로 넘김


    즉, 실행 엔진은 만들어진 계획대로각 핸들러에게 요청해서 받은 결과를 또 다른 핸들러 요청의 입력으로 연결하는 역할을 수행한다.


    - 핸들러 ( 스토리지 엔진)

    핸들러는 MySQL 서버의 가장 밑단에서 MySQL 실행 엔진의 요청에 따라 데이터를 디스크로 저장하고 디스크로부터 읽어 오는 역할을 담당한다. 핸들러는 결국 스토리지 엔진을 의미하며 MyISAM 테이블을ㅈ ㅗ작하는 경우에는 핸들러가 MyISAM 스토리지 엔진이 되고 InnoDB 테이블을 조작하는 경우에는 핸들러가 InnoDb 스토리지 엔진이 된다.

    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    MySQL InnoDB storage  (0) 2016.04.10
    MySQL 쿼리 캐시  (0) 2016.04.10
    InnoDB와 MyISAM 스토리지 엔진 비교  (0) 2016.04.10
    [ 메모 ] MySQL index에 대하여  (0) 2016.03.31
    [ 메모 ] MySQL SQL_CALC_FOUND_ROWS, FOUNT_ROWS() 키워드  (0) 2016.03.31

    댓글

Designed by Tistory.