1. MySQL 구조

 

2. MySQL 엔진 구조

1. 쿼리 파서

쿼리 문장을

토큰 (MySQL이 인식할 수 있는 최소단위의 어휘나 기호) 으로 분리해

트리 구조로 만들어서

전처리기에게 전달.

SQL 문법 오류는 이 과정에서 발견되어  사용자에게 에러 메시지가 전달됨.

2. 전처리기

전달받은 파서 트리를 기반으로

테이블 이름이 존재하는지, 컬럼 이름이 존재하는지, 접근 권한이 있는지

등을 확인해서

문제가 발견되면 오류냄

3. 옵티마이저

쿼리를 최적화해서

최종 실행계획 완성

앞으로 스터디를 통해

옵티마이저가 더 나은 선택을 할 수 있게 유도하는 방법

알게되어야 한다.

4. 쿼리 실행기

스토리지 엔진이 제공하는 핸들러 API를 가지고

옵티마이저가 계획해준 작업 목록을 수행.

 

3. 스토리지 엔진

♣ 핸들러API

MySQL 엔진(의 쿼리실행기)(는) 스토리지 엔진이 제공하는 api 를 이용하여

스토리지 엔진에게 CRUD 작업을 위임한다.

이 때 스토리지 엔진이 제공하는 api를 핸들러api 라고 한다.

♣ 플러그인 모델

핸들러API 규칙을 만족하도록 구현하면

누구든지 스토리지 엔진을 만들어서

MySQL 서버에 추가해서 사용할 수 있다.

(플러그인 모델)

스토리지 엔진 외에도

전문 검색 엔진을 위한 검색어 파서,

사용자 인증 등을 위한 플러그인 등

다양한 기능들이

플러그인으로 구현되어 제공된다.

♣ MySQL이 기본적으로 제공하는 스토리지 엔진

InnoDB, MyISAM 등이 있다.

MySQL 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 여러개를 동시에 사용할 수 있다.

 

다음과 같이 특정 테이블에 특정 스토리지 엔진을 지정할 수 있다.

이렇게 하면 user 테이블에 대한 CRUD는 innoDB 스토리지 엔진이 처리하게 된다.

create table user(
  id bigint,
  name varchar(50),
  age int
) engine=innodb;

 

 

 

 

+ Recent posts