💡 핵심 인사이트
스토리지 엔진은 데이터베이스의 겉모습(SQL 파싱, 최적화) 뒤에 숨어서 **"실제 데이터를 하드 디스크에 어떻게 저장하고, 어떻게 불러올 것인가?"**를 전담하는 심장부이자 핵심 모듈입니다.
MySQL은 '플러그인 아키텍처'를 통해 용도에 따라 InnoDB(트랜잭션/안정성)나 MyISAM(빠른 단순 읽기) 등 다양한 스토리지 엔진을 골라 끼워 쓸 수 있습니다.


Ⅰ. DBMS 아키텍처 내 스토리지 엔진의 위치

DBMS는 크게 두 개의 뇌로 나뉩니다. 하나는 명령을 해석하는 **'데이터베이스 엔진(SQL 엔진)'**이고, 다른 하나는 창고 관리를 담당하는 **'스토리지 엔진'**입니다.

[ MySQL 아키텍처 예시 ]
  ┌──────────────────────────────────────────────┐
  │                 클라이언트                   │
  └──────────────────────┬───────────────────────┘
                         ▼ (SQL 쿼리)
  ┌──────────────────────────────────────────────┐
  │ [ 데이터베이스 엔진 (MySQL 서버) ]           │
  │ - 파서(Parser): 문법 검사                    │
  │ - 옵티마이저(Optimizer): 최적 실행계획 수립  │
  └──────────────────────┬───────────────────────┘
                         ▼ (핸들러 API)
  ┌──────────────────────────────────────────────┐
  │ [ 스토리지 엔진 (Pluggable Storage Engine) ] │◀─ 이 테이블은 InnoDB로!
  │ ┌──────────┐ ┌──────────┐ ┌─────────────┐  │◀─ 저 테이블은 MyISAM으로!
  │ │  InnoDB  │ │  MyISAM  │ │   Memory    │  │
  │ └──────────┘ └──────────┘ └─────────────┘  │
  └──────────────────────┬───────────────────────┘
                         ▼
             [ 물리적 디스크 (Data Files) ]

개발자가 SELECT 쿼리를 날리면 DB 엔진이 이를 해석한 뒤, "스토리지 엔진아, 이 조건에 맞는 데이터 좀 디스크에서 가져와!"라고 지시(핸들러 API 호출)합니다.


Ⅱ. 대표적인 스토리지 엔진 비교 (MySQL 중심)

MySQL은 테이블을 생성할 때 ENGINE=InnoDB처럼 스토리지 엔진을 지정할 수 있습니다. 각 엔진은 데이터를 저장하는 방식과 잠금(Lock)의 범위가 완전히 다릅니다.

1. InnoDB (현재의 표준 및 기본 엔진)

  • 핵심 키워드: 트랜잭션(ACID) 지원, 행 단위 잠금(Row-level Lock), 복구 능력.
  • 특징:
    • 결제 시스템이나 게시판처럼 삽입, 수정, 삭제가 빈번하게 일어나는 서비스에 필수적입니다.
    • 하나의 데이터를 수정할 때 테이블 전체를 잠그지 않고 해당 줄(Row)만 잠가서 동시성 처리 성능이 뛰어납니다.
    • 외래키(Foreign Key)를 지원하며, 시스템이 뻗어도 로그를 통해 데이터를 복구(Crash Recovery)할 수 있습니다.
  • 용도: 일반적인 거의 모든 웹/앱 서비스의 기본 테이블.

2. MyISAM (과거의 영광)

  • 핵심 키워드: 단순성, 빠른 읽기 속도, 테이블 단위 잠금(Table-level Lock).
  • 특징:
    • 트랜잭션을 지원하지 않습니다. (작업 중 오류가 나도 롤백이 안 됨).
    • 데이터를 수정할 때 테이블 전체에 락을 걸어버리기 때문에, 동시 접속자가 글을 쓰면 대기(병목) 현상이 심하게 발생합니다.
    • 대신 트랜잭션 처리를 위한 오버헤드가 없어서 SELECT(조회) 속도가 극단적으로 빠릅니다.
  • 용도: 과거 블로그의 조회수 높은 정적 페이지, 로그 수집 테이블 (현재는 대부분 InnoDB로 대체됨).

3. Memory (HEAP) 엔진

  • 데이터를 디스크가 아닌 메모리(RAM)에만 저장하는 해시 인덱스 기반 엔진입니다. 재부팅 시 데이터가 날아가므로 임시 캐시나 세션 관리용 테이블로 씁니다.

📢 섹션 요약 비유: DB 엔진이 고객의 주문을 받는 레스토랑의 홀 매니저라면, 스토리지 엔진은 주방장입니다. 손님이 빠른 패스트푸드를 원하면 'MyISAM 주방장'이 요리하고, 절대 실수가 있어서는 안 되는 정통 코스 요리를 원하면 'InnoDB 주방장'이 요리하게끔 식당 시스템을 구축한 것입니다.