MySQL Server

2024. 11. 1. 18:39·DB

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
'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
상단으로

티스토리툴바