본문 바로가기

DB

[DB] MySQL

  • MySQL가장 인기가 많은 오픈 소스 관계형 데이터베이스이다.
  • 높은 접근성과 낮은 비용이라는 장점을 가진다.
  • sql 안식 표준을 지키고 있다.

 

MySQL Architecture

  • MySQL Engine
    • 판단과 명령을하는 두뇌 역할
    • 쿼리 파서 -> 전처리기 -> 옵티마이저 -> 쿼리 실행기 등의 구성 요소로 이루어져 있다.
    • 쿼리 파서
      1. SQL을 파싱하여 Syntax Tree를 만든다.
      2. 해당 과정에서 문법 오류 검사가 이루어진다.
    • 전처리기
      1. 쿼리 파서에서 만든 Tree를 바탕으로 전처리를 시작한다.
      2. 테이블이나 컬럼 존재 여부, 점근 권한 등 Semantic 오류를 검사한다.
    • 쿼리 파서, 전처리기컴파일 과정과 매우 유사하고 매번 구문 평가를 진행한다.

    • 옵티마이저
      1. 쿼리를 처리하기 위한 여러 방법들을 만들고, 각 방법들의 비용 정보와 테이블의 통계 정보를 이용해서 정보를 산정한다.
      2. 테이블의 순서, 불필요한 조건 제거, 통계 정보를 바탕으로 전략(실행 계획)을 결정한다.
      3. 옵티마이저가 어떤 전략을 결정하느냐에 따라 성능이 많이 달라진다.
      4. 가끔씩 성능이 나쁜 판단을 하기 때문에, 개발자가 힌트를 사용해 도움을 줄 수 있다.
    • 쿼리 실행기
      1. 옵티마이저가 결정한 방법대로 스토리지 엔진에 Handler API를 사용해서 요청한다.
  • 스토리지 엔진
    • 판단을 수행, 동작하는 팔과 다리 역할
    • 디스크에서 데이터를 가져오거나 저장하는 역할
    • InnoDB, MyIsam 등 여러 개의 스토리지 엔진이 존재하고 8.0 버전 대부터 InnoDB 엔진을 디폴트로 설정하였다.
    • InnoDB 핵심 키워드
      1. Clustered Index
      2. Redo-Undo
      3. Buffer Pool
  • 쿼리 캐시
    • MySQL Engine 이전 단계에 쿼리 캐시가 존재했었다.
    • MySQL 8.0 대 버전 이후로 폐기되었다.
    • 쿼리에 해당하는 데이터를 캐시, 똑같은 쿼리로 요청이 오면 뒤의 과정을 거치지 않고 그대로 반환하는 역할을 수행했다.
    • 그대로 반환하기 때문에, Table의 수정이 발생하면 잘못된 정보를 제공하는 문제점이 존재했다.
    • Oracle에는 소프트 파싱이 존재, 소프트 파싱은 쿼리에 해당하는 데이터를 캐시하는 것이 아닌 쿼리의 실행 계획을 캐싱해서 가지고 있는 방법

'DB' 카테고리의 다른 글

[DB] 문자열 데이터 타입에 글자(한글) 수 제한하기  (0) 2023.07.29
[DB] 정규화  (0) 2022.12.15
[DB] MySQL vs PostgreSQL  (0) 2022.11.19
Hot Key  (0) 2022.11.09