1. MySQL Server
- 오픈소스 관계형 RDBMS 중 하나로 전세계에서 가장 많이 쓰이는 DBMS 중 하나이다.
- MySQL Server 는 크게 MySQL Engine과 Storage Engine으로 구성되어 있다.
- 여기서 중요한 점은 하나의 쿼리는 여러개의 하위 쿼리로 나뉘는데 이 하위 쿼리가 어느 영역에서 처리되는지 알아야한다.
- Architecture
- MySQL Server는 모든 언어에서 MySQL 서버로 쿼리를 사용할 수 있도록 지원한다. (SQL Interface)
- Storage Engine 의 경우 여러개를 둘 수 있지만, MySQL Engine은 오직 하나만 사용한다.
- Storage Engine을 통해 저장되는 실질적인 저장장치는 운영체제 하드웨어의 디스크이다.
2. MySQL Engine 이란?
- MySQL Engine은 MySQL Server에서 두뇌역할을 맡는다.
- 사용자의 요청 처리 및 최적화 역할을 갖고 있다.
- 구성 요소
- Connection Handler : 커넥션 및 요청 처리 담당
- SQL Interface : DDL** , DCL** , DML** , View, Procedure 같은 인터페이스 제공 담당
- SQL Parser : 쿼리문을 MySQL 이 처리하기 좋은 형태의 토큰으로 나누고, SQL 문의 문법 오류를 검출한다.
- SQL Optimizer : 쿼리의 최적화된 실행을 담당한다.
- Cache & Buffer : 성능 향상을 위한 보조 기억 담당(index 등)
▶ SQL Parser 토큰화 순서
- 토큰 단위로 나누어 트리의 형태로 파싱한다.
- 해석 가능한 단위로 분리되는 SQL문의 특성을 활용한다.
1. SQL문을 받는다.
SELECT name,age FROM user WHERE age > 20;
2. 토큰화를 진행한다. (Tokenizing)
- SELECT: 쿼리의 종류(선택 작업을 수행하는 명령어).
- name, age: 선택할 열 이름들.
- FROM: 선택 작업의 대상 테이블을 지정하는 키워드.
- users: 테이블 이름.
- WHERE: 조건을 지정하는 키워드.
- age, >, 20: 조건을 구성하는 요소들.
3. 파싱 트리(Abstract Syntax Tree) 를 생성한다.
SELECT
├─ Columns
│ ├─ name
│ └─ age
└─ FROM
├─ Table
│ └─ users
└─ WHERE
├─ Condition
├─ Column: age
├─ Operator: >
└─ Value: 20
4. 오류검사
- 이렇게 생성된 토큰들을 검사하며 문법에 오류가 있는지 체크한다.
▶ MySQL Engine를 통해 최적화된 실행 요청을 어떻게 Storage Engine에 보낼까?
Handler API 를 통해 Handler Request를 Storage Engine에 보내어 요청한다.
- Handler Request : MySQL Engine에서 Storage Engine에 보내는 요청
- Handler API : Handler Request를 보내기 위한 API
▷ 즉, Storage Engine(InnoDB, MyISAM..)와 MySQL Engine은 Handler API를 통해 데이터를 주고 받습니다.
3. Storage Engine이란?
- Handler API(Handler Request) 를 통해 받은 읽기 / 쓰기 기능을 수행하는 엔진
- MySQL Engine과 플러그인 형태로 연동 / 분리가 가능하다.
- 여러개의 Storage Engine을 하나의 MySQL Server에서 사용이 가능하다.
- Storage Engine으로는 InnoDB, MyISAM, Memory 엔진들이 있다.
** 참고
- DDL : 데이터 정의어, DB를 정의하는 언어이며 데이터를 생성, 수정, 삭제등의 데이터 전체의 골격을 정의하는 언어
- CREATE, ALTER, DROP, TRUNCATE 가 있다.
- DML : 데이터 조작어, 정의된 데이터 베이스에 입력된 레코드(인스턴스)를 조회, 삽입, 삭제, 수정등의 역할을 하는 언어
- SELECT, DELETE, UPDATE, INSERT
- DCL : 데이터 베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어
- GRANT, REVOKE, COMMIT, ROLLBACK
참고 페이지 : https://jeong-pro.tistory.com/239, https://gngsn.tistory.com/197
'DB' 카테고리의 다른 글
구조적 질의어 (SQL, Structured Query Language) ( 1 ) (1) | 2024.11.05 |
---|---|
MySQL - InnoDB (2) | 2024.11.01 |
RDBMS (Relationa DataBase Management System) (0) | 2024.11.01 |
데이터 베이스 키(key) (1) | 2024.11.01 |
3단계 데이터 베이스 구조 (0) | 2024.10.31 |