- MySQL은 가장 인기가 많은 오픈 소스 관계형 데이터베이스이다.
- 높은 접근성과 낮은 비용이라는 장점을 가진다.
- sql 안식 표준을 지키고 있다.
MySQL Architecture
- MySQL Engine
- 판단과 명령을하는 두뇌 역할
- 쿼리 파서 -> 전처리기 -> 옵티마이저 -> 쿼리 실행기 등의 구성 요소로 이루어져 있다.
- 쿼리 파서
- SQL을 파싱하여 Syntax Tree를 만든다.
- 해당 과정에서 문법 오류 검사가 이루어진다.
- 전처리기
- 쿼리 파서에서 만든 Tree를 바탕으로 전처리를 시작한다.
- 테이블이나 컬럼 존재 여부, 점근 권한 등 Semantic 오류를 검사한다.
- 쿼리 파서, 전처리기는 컴파일 과정과 매우 유사하고 매번 구문 평가를 진행한다.
- 옵티마이저
- 쿼리를 처리하기 위한 여러 방법들을 만들고, 각 방법들의 비용 정보와 테이블의 통계 정보를 이용해서 정보를 산정한다.
- 테이블의 순서, 불필요한 조건 제거, 통계 정보를 바탕으로 전략(실행 계획)을 결정한다.
- 옵티마이저가 어떤 전략을 결정하느냐에 따라 성능이 많이 달라진다.
- 가끔씩 성능이 나쁜 판단을 하기 때문에, 개발자가 힌트를 사용해 도움을 줄 수 있다.
- 쿼리 실행기
- 옵티마이저가 결정한 방법대로 스토리지 엔진에 Handler API를 사용해서 요청한다.
- 스토리지 엔진
- 판단을 수행, 동작하는 팔과 다리 역할
- 디스크에서 데이터를 가져오거나 저장하는 역할
- InnoDB, MyIsam 등 여러 개의 스토리지 엔진이 존재하고 8.0 버전 대부터 InnoDB 엔진을 디폴트로 설정하였다.
- InnoDB 핵심 키워드
- Clustered Index
- Redo-Undo
- 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 |