ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mysql 쿼리 실행 절차
    공부하기/데이터베이스 2023. 2. 19. 18:12

    mysql 엔진 오브젝트 사전 지식

    • 파서 
      • 사용자가 요청한 SQL 문을 쪼개 최소 단위로 분리하고 트리를 만듬, 트리를 만들면서 문법 검사 수행
    • 전처리기 
      • 파서에서 생성한 트리를 토대로 SQL 문에 구조적인 문제가 없는지 파악
    • 옵티마이저 
      • 핵심 엔진 중 하나로 두뇌라고 불러도 과언이 아니다
      • 전달된 파서 트리를 토대로 필요하지 않은 조건은 제거하거나 연산 과정을 단순화한다.
      • 어떤 순서로 테이블에 접근할지, 인덱스를 사용할지, 어떤 인덱스를 사용할지, 임시 테이블을 사용할지와 같은 실행계획을 수립한다.
      • 옵티마이저가 선택한 최적의 실행 계획이 최상의 실행 계획이 아닐 가능성도 있다
    • 엔진 실행기
      • 옵티마이저에서 수립한 실행 계획을 참고하여 스토리지 엔진에서 데이터를 가져온다
      • 그 후 Mysql 엔진에서는 읽어온 데이터를 정렬,조인하고 불필요한 데이터는 필터링하는 등 추가 작업을 진행한다.
      • 엔진 부하를 줄이려면 스토리지 엔진에서 가져오는 데이터양을 줄이는게 매우 중요하다.

    쿼리 실행 순서

     

    1. SQL 문을 수행하면 파서는 MySql이 이해할 수 있는 최소 단위로 구성요소를 분리하고 트리로 만든다.

    2. 트리를 만드는 과정에서 문법 오류가 있는지 검토

    3. 트리의 최소 단위는 >, <, = 등의 기호나 SQL 키워드로 분리

    ----> 만약 트리에 허용되지 않는 문법이 포함된다면 에러 발생과 동시에 실행 종료

    4. 전처리기는 생성된 트리 결과를 토대로 이미 생성된 테이블이나 뷰 등으로 구성되지는 않는지, 조회 권한이 없는 테이블을 조회하는지 등 유효성을 검증한다.

    ----> 만약 유효하지 않는 오브젝트가 있거나 권한이 없는 오브젝트를 호출하면 바로 에러를 발생하여 사용자에게 표시

    5.옵티마이저는 트리를 구성하는 오브젝트의 데이터를 효율적으로 가져오기 위해 시간이 적게 소요되면서 비용도 효율적인 결로로 데이터를 검색하는 방법에 관한 실행 계획을 수립한다.

    6. 엔진 실행기는 이전에 수립된 실행 계획으로 스토리지 엔진을 호출해 필요한 데이터를 가져온다.

    7.그 후 엔진 실행기는 스토리지 엔진을 통해서 가져온 데이터 중 불핑요한 데이터를 필터링하여 사용자가 원하는 결과를 전달한다.

     

     

Designed by Tistory.