일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리눅스
- smart cast
- c#
- 문법 정리
- 유사코드
- hyperledger
- 티스토리
- 파이썬
- 오라클
- JVM
- 운영체제
- 알고리즘
- auto configure
- 백준 알고리즘
- 파이썬 소스
- MongoDB
- resilience4j
- 자바
- jsp
- 오라클 디비
- spring
- oracle
- 초대장
- 학점
- K6
- 자바 프로젝트
- dynamic query
- gradle
- SQL
- 프로젝트
Archives
- Today
- Total
모종닷컴
MySQL 쿼리 실행 구조 본문
반응형
쿼리 파서
- 요청으로 들어온 쿼리 문장을 토큰(MySQL이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조로 만든다.
- 쿼리 문장의 기본 문법 오류는 이 과정에서 발견
전처리기
- 각 토큰을 테이블 이름이나 칼럼 이름, 또는 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부와 객체의 접근 권한 등을 확인하는 과정
옵티마이저
- 사용자의 요청으로 들어온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지를 결정
- DBMS의 두뇌에 해당
실행 엔진
- 만들어진 계획대로 각 핸들러에게 요청해서 받은 결과를 또 다른 핸들러 요청의 입력으로 연결하는 역할 수행
- 옵티마이저가 두뇌라면 실행 엔진은 손과 발
핸들러 (스토리지 엔진)
- MySQL 서버의 가장 밑단에서 MySQL 실행 엔진의 요청에 따라 데이터를 디스크로 저장하고 디스크로부터 읽어 오는 역할을 담당
- InnoDB 테이블을 조작하는 경우 핸들러가 InnoDB 스토리지 엔진, MyISAM 테이블을 조작하는 경우 MyISAM 스토리지 엔진이 핸들러이다.
쿼리 캐시
위의 이미지에서는 보이지 않지만 쿼리 파서 이전에 쿼리 캐시가 존재한다.
- SQL의 실행 결과를 메모리에 캐시하고, 동일 SQL 쿼리가 실행되면 테이블을 읽지 않고 즉시 결과를 반환 (매우 빠른 성능)
- 테이블의 데이터가 변경되면 캐시에 저장된 결과 중에서 변경된 테이블과 관련된 것들을 모두 삭제 -> 동시 처리 성능 저하 유발
- MySQL 8.0부터 쿼리 캐시는 완전히 제거되고, 관련된 시스템 변수도 또한 제거됨.
반응형
'Programming > 데이터베이스' 카테고리의 다른 글
MySQL InnoDB 스토리지 엔진 (2) (0) | 2022.08.08 |
---|---|
MySQL InnoDB 스토리지 엔진 (1) (0) | 2022.07.30 |
MySQL 플러그인 스토리지 엔진 모델 (0) | 2022.07.23 |
MySQL 메모리 할당 및 사용 구조 (0) | 2022.07.22 |
MySQL 스레딩 구조 (0) | 2022.07.19 |