제이제이
article thumbnail

 

💁🏻‍♂️ MySQL의 아키텍처


🤔 MySQL의 아키텍처?

  • 우리가 사용하는 MySQL은 크게 MySQL 엔진, 스토리지 엔진으로 나누어지며, 핸들러 API를 통해서 서로 통신을 주고 받습니다.

 

🔎  MySQL의 엔진 살펴보기


 

MySQL 엔진


 

1. 쿼리 파서

  • SQL문장을 트리의 형태로 파싱을 하게 됩니다.

→ 해당 트리 안에 들어 있는 각각의 요소들은 MySQL이 인지할 수 있는 토큰이라는 단위로 파싱됩니다.

→ 이때 SQL 구문의 문법적인 오류가 있는지 검사를 하고, 예외가 있다면 사용자에게 예외 메시지를 반환하는 역할도 수행합니다.

2. 전처리기

  • 예약어를 제외한 토큰을 검사해서 실제 DB안에 객체가 존재하는지, 접근이 가능한지, 권한 등을 검증하는 역할을 수행합니다.

→ 파서(parser)가 만든 트리를 기반으로 SQL 구문의 유효성 검증을 수행합니다.

→ 각 토큰의 테이블, 컬럼, 프로시저 등이 존재하는지 확인합니다.

→ 객체의 접근 권한을 확인합니다.

3. 옵티마이저

  • 파스 트리를 실행 계획으로 바꾸는 역할을 수행합니다.

→ 쿼리를 최적으로 실행하기 위한 실행 계획을 수립합니다.

→ 쿼리를 재작성하고 테이블 스캔 순서를 경정, 사용할 인덱스를 선택합니다.

  • 비용 기반 최적화와 규칙 기반 최적화가 있습니다.

비용 기반 최적화 = MySQL에 존재하는 다양한 통계 정보를 활용해서 실행 계획을 수립합니다.

규칙 기반 최적화 = 동일한 SQL이라면, 항상 동일한 실행 계획을 수립합니다.

4. 실행 엔진

  • 실행 계획을 토대로 스토리지 엔진과 통신을 해서 데이터를 읽어오는 작업을 수행합니다.

 

스토리지 엔진


  • 스토리지 엔진에 대한 설명은 굉장히 많아, 해당 포스팅에서는  현재 사용하거나, 사용했던 스토리지 엔진의 종류를 간단하게 살펴보고, 이후 별도의 포스팅에서 보다 자세하게 다루겠습니다.
  • MySQL의 스토리지 엔진은 여러 스토리지 엔진이 있으며 크게 InnoDB, MyISAM 스토리지 엔진을 주로 사용합니다.

 

  • InnoDB와 MyISAM의 주요 차이점은 다음의 표와 같습니다.

 

📒 Reference


 

Real MySQL 8.0 1권

《Real MySQL》을 정제해서 꼭 필요한 내용으로 압축하고, MySQL 8.0의 GTID와 InnoDB 클러스터 기능들과 소프트웨어 업계 트렌드를 반영한 GIS 및 전문 검색 등의 확장 기능들을 추가로 수록했다.

www.aladin.co.kr

 

 

우테코 - MySQL 아키텍처 설명(https://www.youtube.com/watch?v=8PRkLItDwXQ&t=384s)

'데이터 베이스 > MySQL' 카테고리의 다른 글

MySQL의 계정 생성 및 권한 부여 방법  (0) 2023.05.07
2. MySQL과 Workbench 설치하기  (0) 2022.11.11
1.DBMS 소개와 MySQL 소개  (0) 2022.11.11
profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!