본문 바로가기
MYSQL

[MYSQL] DB 엔진, SQL 프로세스 용어

by Johnny's 2023. 6. 25.

DB 엔진 용어

1. 사용자가 DB에서 원하는 데이터를 가져오기 위해 SQL문 실행

2. 실행된 SQL문은 MYSQL 엔진에서 문법에러 체크, DB에 존재하는 테이블 대상으로 SQL문을 작성했는지 여부 등 다양한 문법 및 구문 검사 (파싱작업을 하는 파서(parser 역할)

3. 요청한 데이터를 빠르고 효율적으로 찾아가는 전략적 계획 수립(옵티마이저(optimizer 역할)

4. 스토리 엔진에 위치한 데이터까지 찾아간 뒤 해당 데이터를 MYSQL 엔진으로 전달

5. 불필요한 부분을 필터링(제거, 변경)하고 필요한 연산을 수행한 뒤 사용자에게 최종 결과 전달

 

 

스토리지 엔진

- (InnoDB, MyISAM, Memory 등) 스토리지 엔진은 사용자가 요청한 SQL문을 토대로 DB에 저장된 디스크나 메모리에서 필요한 데이터를 가져오는 역할을 수행

- 일반적으로 온라인상의 트랜잭션 발생으로 데이터를 처리하는 OLTP(online transaction processing) 환경이 대다수인 만큼 주로 InnoDB 엔진 사용

- MyISAM 엔진 : 대량의 쓰기 트랜잭션

- Memory 엔진 : 메모리 데이터를 로드하여 빠르게 읽는 효과

 

MYSQL 엔진

- 사용자가 요청한 SQL문을 넘겨받은 뒤 SQL 문법 검사와 적절한 오브젝트 활용검사를 하고, SQL문을 최소 단위로 분리하여 원하는 데이터를 빠르게 찾는 경로를 모색하는 역할을 수행

- 이후 스토리지 엔진으로부터 전달받은 데이터 대상으로 불필요한 데이터는 제거, 가공 및 연산하는 역할

- SQL 문의 시작 및 마무리 단계에 MYSQL 엔진이 관여하며, 스토리지 엔진으로부터 필요한 데이터만을 가져오는 핵심 역할을 담당

 

SQL 프로세스 용어

1. SQL문 수행

2. 파서(Parsor) : 최소 단위로 구성요소를 분리하고 해당 구성요소를 트리로 작성

 - 문법 오류 검토, 최소단위는 >,<,= 등의 기호나 SQL 키워드로 분리

3. 전처리기(preprocessor) : 유효성 검증(테이블 존재 유무, 존재하지 않은 열 포함 여부, 조회 권한이 없는 테이블 조회)

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

5. 엔진 실행기(engine executor) 스토리지 엔진을 호출하여 필요한 데이터를 가져옴

6. 원하는 결과 수신



파서(Parsor)

- MYSQL 엔진에 포함되는 오브젝트

- 사용자가 요청한 SQL문을 최소 단위로 분리하고 트리를 생성

- 트리를 만들면서 문법 검사 수행

 

전처리기(Preprocessor)

-  MYSQL 엔진에 포함되는 오브젝트

- SQL문에 구조적인 문제가 없는지 파악

- SQL문에 작성된 테이블, 열, 함수, 뷰와 같은 오브젝트가이미 생성된 오브젝트인지, 접근 권한은 부여되어 있는지 확인하는 역할

 

옵티마이저(Optimizer)

-  MYSQL의 핵심 엔진 중 하나

- 필요하지 않은 조건은 제거하거나 연산과정을 단순화

- 테이블 접근 순서, 인덱스 사용 여부, 정렬할 때 인덱스를 사용할지 임시테이블을 사용할지와 같은 실행 계획을 수립

 

엔진실행기(Engine executor)

- MYSQL 엔진과 스토리지 엔진 영역 모두에 걸치는 오브젝트

- 옵티마이저에서 수립한 실행 계획을 참고하여 스토리지 엔진에서 데이터를 가져옴

- 이후 MYSQL 엔진에서는 읽어온 데이터를 정렬하거나 조인하고, 불필요한 데이터는 필터링 처리하는 추가 작업을 진행

 

 

* 참고

- 업무에 바로쓰는 SQL 튜닝(도서) - 2장 SQL 튜닝 용어를 직관적으로 이해하기

댓글