본문 바로가기
Mysql/MySQL 아키텍처 심층 분석

MySQL 서버 구조 (Connection Layer, Query Layer, Storage Engine Layer)

by DEVLIB 2025. 4. 18.
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