728x90
MySQL 서버 구조: 3개 레이어 심층 분석
MySQL은 Layered Architecture를 기반으로 설계되어 있습니다.
서버 부분과 스토리지 엔진 부분이 깔끔히 분리되어 있어, 확장성과 유연성을 가집니다.
1. Connection Layer (연결 레이어)
역할: 클라이언트와의 세션(Session) 관리 담당
주요 기능
- Connection Management
- TCP/IP, Unix Socket 등을 통해 클라이언트 연결을 관리
- 연결 당 스레드(Thread-Per-Connection) 생성
- Thread Handling
- 각 연결마다 별도의 스레드 할당
- 연결된 스레드는 쿼리를 처리하고, 결과를 반환
- Authentication
- 로그인 시 사용자 인증 (user, password, host, plugin 방식)
- Connection Pooling (MySQL Enterprise 혹은 Proxy 레벨 구현)
특징
- Connection Layer는 쿼리 처리 전의 단계
- 높은 동시 접속을 위해 최근에는 Thread Pool 기능도 추가
참고
- max_connections, thread_cache_size 같은 파라미터가 이 레이어와 관련 있음
2. Query Layer (쿼리 레이어)
역할: 쿼리 파싱, 최적화, 실행 계획 생성 및 실행 담당
주요 기능
- Parser
- SQL 문장을 파싱하여 Parse Tree 생성
- 문법 오류 체크
- Optimizer
- 다양한 실행 계획 중 비용(Cost)이 가장 낮은 계획 선택
- 쿼리 재작성 (Query Rewriter)
- Query Cache (8.0부터 제거됨)
- Execution Engine
- 최종적으로 만들어진 실행 계획을 따라 작업을 수행
특징
- Query Layer는 Storage Engine에 독립적으로 작동
- 복잡한 조인(Join), 서브쿼리(Subquery) 처리
- Explain Plan을 통해 최적화 과정을 들여다볼 수 있음
참고
- optimizer_switch, query_cache_type 등 관련 파라미터 존재
- EXPLAIN, SHOW PROFILE, OPTIMIZER_TRACE 명령어로 분석 가능
3. Storage Engine Layer (스토리지 엔진 레이어)
역할: 실제 데이터 CRUD 작업을 담당하는 모듈
주요 기능
- CRUD 작업 (Create, Read, Update, Delete)
- Transaction 처리 (InnoDB 전용)
- Index 및 Storage 관리
- Lock 및 Isolation 관리
대표 스토리지 엔진
- InnoDB (기본값)
- ACID 트랜잭션 지원
- 클러스터형 인덱스(Primary Key = Physical Storage)
- MyISAM
- 트랜잭션 미지원, 빠른 읽기 성능
- Memory
- 메모리 기반 테이블 (임시 저장용)
- NDB Cluster
- 분산형 스토리지
특징
- 테이블 단위로 어떤 스토리지 엔진을 사용할지 선택 가능
- MySQL은 플러그인 아키텍처를 지원 → 새로운 스토리지 엔진 추가 가능
참고
- default_storage_engine, innodb_buffer_pool_size 등 관련 파라미터 존재
- SHOW ENGINES 명령어로 사용 가능한 스토리지 엔진 확인 가능
전체 흐름 요약
클라이언트 연결
↓
Connection Layer: 연결 관리 및 인증
↓
Query Layer: SQL 파싱 → 최적화 → 실행 계획 수립
↓
Storage Engine Layer: 데이터 조회/변경 실제 작업
↓
결과 반환
추가 고급 주제
- Thread Pool 아키텍처 심화
- Optimizer Hints 사용법
- InnoDB 내부 구조 (Page, Segment, Tablespace)
- Doublewrite Buffer 최적화 전략
LIST
'Mysql > MySQL 아키텍처 심층 분석' 카테고리의 다른 글
InnoDB Storage Engine 상세 (0) | 2025.04.18 |
---|---|
InnoDB Buffer Pool 내부 구조 (Chunk, Instance 분리 등) (0) | 2025.04.18 |
MySQL 프로세스 및 메모리 구조 (0) | 2025.04.18 |
Optimizer Hints 상세 매뉴얼 (USE INDEX, FORCE INDEX, STRAIGHT_JOIN 등) (0) | 2025.04.18 |
Query Layer 최적화 과정 (Optimizer 내부 동작) (0) | 2025.04.18 |