대용량-MySQL : ch 03 MySQL소개

박철민·2022년 11월 16일
0

01. MySQL을 학습하는 이유

많은 데이터베이스들이 있다.
-> 어떠 것들 부터 공부해야 할까?

관계형 데이터베이스는 아직까지 가장 범용적
백엔드 개발자라면 실무에서 관게형 데이터베이스를 실무에서 다루게 될 것

물론 그렇다고 다른 데이터베이스를 몰라야 하는 것은 아니다. 알아야합니다.
서로의 단점을 보완하고 발전한 상호보완적인 관계이기 때문

싸고 인기 많은 MySQL을 사용하자


02. MySQL 아키텍처 소개

데이터베이스는 파일을 관리하는 서버

MySQL 엔진은 판단을 하는
스토리지 엔진은 움직이는 몸

MySQL엔진

쿼리 파서

- SQL을 파싱하여 Syntax Tree를 만듬
- 이 과정에서 문법 오류 검사가 이루어짐

전처리기

- 쿼리파서에서 만든 Tree를 바탕으로 전처리 시작
- 테이블이나 컬럼 존재 여부, 접근 권한 등 Semantic 오류 검사

쿼리파서, 전처리기는 컴파일 과정과 유사하다.
하지만 SQL은 프로그래밍 언어처럼 컴파일 타임때 검증 할 수 없어 매번 구문 평가를 진행

옵티마이저

- 쿼리를 처리하기 위한 여러 방법들을 만들고, 각 방법들의 비용정보와 테이블의 통계정보를 이용해 비용을 선정
- 테이블 순서, 불필요한 조건 제거, 통계정보를 바탕으로 전략을 결정(실행 계획 수립)
- 옵티마이저가 어떤 전략을 결정했느냐에 따라 성능이 많이 달라진다.


옵티마이저가 결정하면 쿼리실행기가 결정한 계획대로 스토리지 엔진에 요청을 한다. 이때의 요청을 핸들러 API이다.


쿼리 캐시가 주는 인사이트

MySQL 5.0까지는 쿼리 캐시라는 것이 있었다.
사라졌다.

소프트 파싱

하드 파싱

스트리지 엔진

  • 디스크에서 데이터를 가져오거나 저장하는 역할
  • MySQL 스토리지 엔진은 플러그인 형태로 Handler API만 맞춘다면 직접 구현해서 사용할 수 있다.
  • InnoDB, MyIsam 등 여러 개의 스토리지 엔진이 존재
  • 8.0대 부터는 InnoDB엔진을 디폴트

InnoDB 핵심 키워드

Clustered Index

Redo - Undo

Buffer pool


profile
넓고 깊은 지식을 위해 삽질 중

0개의 댓글