모종닷컴

MySQL 쿼리 실행 구조 본문

Programming/데이터베이스

MySQL 쿼리 실행 구조

모종 2022. 7. 25. 23:16
반응형

쿼리 실행 구조

쿼리 파서

  • 요청으로 들어온 쿼리 문장을 토큰(MySQL이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조로 만든다.
  • 쿼리 문장의 기본 문법 오류는 이 과정에서 발견

전처리기

  • 각 토큰을 테이블 이름이나 칼럼 이름, 또는 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부객체의 접근 권한 등을 확인하는 과정

옵티마이저

  • 사용자의 요청으로 들어온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지를 결정
  • DBMS의 두뇌에 해당

실행 엔진

  • 만들어진 계획대로 각 핸들러에게 요청해서 받은 결과를 또 다른 핸들러 요청의 입력으로 연결하는 역할 수행
  • 옵티마이저가 두뇌라면 실행 엔진은 손과 발

핸들러 (스토리지 엔진)

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

쿼리 캐시

위의 이미지에서는 보이지 않지만 쿼리 파서 이전에 쿼리 캐시가 존재한다.

  • SQL의 실행 결과를 메모리에 캐시하고, 동일 SQL 쿼리가 실행되면 테이블을 읽지 않고 즉시 결과를 반환 (매우 빠른 성능)
  • 테이블의 데이터가 변경되면 캐시에 저장된 결과 중에서 변경된 테이블과 관련된 것들을 모두 삭제 -> 동시 처리 성능 저하 유발
  • MySQL 8.0부터 쿼리 캐시는 완전히 제거되고, 관련된 시스템 변수도 또한 제거됨.
반응형