MySQL Server

2024. 11. 1. 18:39·DB
목차
  1. 1. MySQL Server
  2. 2. MySQL Engine 이란?
  3. ▶  SQL Parser 토큰화 순서
  4. ▶ MySQL Engine를 통해 최적화된 실행 요청을 어떻게 Storage Engine에 보낼까?
  5. 3. Storage Engine이란?
  6. ** 참고

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
  1. 1. MySQL Server
  2. 2. MySQL Engine 이란?
  3. ▶  SQL Parser 토큰화 순서
  4. ▶ MySQL Engine를 통해 최적화된 실행 요청을 어떻게 Storage Engine에 보낼까?
  5. 3. Storage Engine이란?
  6. ** 참고
'DB' 카테고리의 다른 글
  • 구조적 질의어 (SQL, Structured Query Language) ( 1 )
  • MySQL - InnoDB
  • RDBMS (Relationa DataBase Management System)
  • 데이터 베이스 키(key)
CoMeangMeangIn
CoMeangMeangIn
코딩하는 코맹맹이
  • CoMeangMeangIn
    CoMeangMeangIn
    CoMeangMeangIn
  • 전체
    오늘
    어제
    • 분류 전체보기 (22)
      • java (3)
        • spring (1)
        • build (1)
      • DB (16)
      • 알고리즘 (1)
      • 회고 (1)
      • git (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
CoMeangMeangIn
MySQL Server
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.