본문 바로가기
컴퓨터과학과

InnoDB, MySQL 데이터베이스 관리 시스템에서 사용하는 저장 엔진(Storage Engine)

by 공부하는노년 2025. 6. 22.
반응형

InnoDB

InnoDBMySQL 데이터베이스 관리 시스템에서 사용하는 저장 엔진(Storage Engine) 중 하나입니다. 특히 안정성, 데이터 무결성, 트랜잭션 지원 등을 중요시하는 시스템에서 널리 사용됩니다.


✅ InnoDB란 무엇인가요?

InnoDB는 MySQL에서 데이터를 디스크에 저장하고 관리하는 방식을 제공하는 저장 엔진입니다.
MySQL 5.5 이후로는 기본 저장 엔진(Default Engine) 으로 설정되어 있습니다.


🔧 InnoDB의 핵심 특징

1. ✅ 트랜잭션(Transactions) 지원

  • ACID 원칙(원자성, 일관성, 고립성, 지속성)을 따릅니다.
  • BEGIN, COMMIT, ROLLBACK 구문을 통해 안전한 작업 가능

2. ✅ 외래 키(Foreign Key) 제약조건 지원

  • 테이블 간의 참조 무결성(Referential Integrity) 보장
  • 예: 고객 삭제 시 주문도 같이 삭제되도록 설정 가능 (ON DELETE CASCADE 등)

3. ✅ 자동 복구 기능

  • 시스템 충돌이나 전원 장애가 발생해도 로그 기반 복구 기능으로 데이터 복원

4. ✅ 레코드 수준의 잠금(Row-Level Locking)

  • 동시 사용자 처리에 유리하며, 테이블 전체 잠금을 피함
  • 다중 사용자 환경에서 성능 향상

5. ✅ 지연 쓰기(Write Buffering) 및 버퍼 풀(Buffer Pool) 사용

  • 메모리 기반 캐시 기능을 통해 읽기/쓰기 성능 향상
  • 디스크 I/O 비용 감소

📁 InnoDB의 구조

테이블 스페이스(Table Space) 데이터와 인덱스를 저장하는 물리적 공간 (보통 .ibd 파일)
버퍼 풀(Buffer Pool) 자주 접근되는 데이터를 메모리에 저장
로그 파일(Log File) 트랜잭션 작업 내용을 기록하여 복구 가능
데이터 딕셔너리 테이블, 인덱스, 열 등의 메타데이터 저장

📌 MyISAM과의 주요 차이점

항목 InnoDB MyISAM
트랜잭션 지원 O X
외래 키 지원 O X
잠금 방식 행 수준(Row-level) 테이블 수준(Table-level)
데이터 안정성 높음 (자동 복구) 낮음 (손상 위험)
속도 다중 사용자 환경에 유리 단일 사용자나 읽기 중심 환경에 유리

🔍 사용 예시

CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
) ENGINE=InnoDB;

위의 예처럼 ENGINE=InnoDB로 명시하면, 해당 테이블은 InnoDB 저장 엔진을 사용하게 됩니다.


📝 요약정리

  • InnoDB는 MySQL의 대표 저장 엔진
  • 트랜잭션, 외래 키, 자동 복구 등 신뢰성이 필요한 시스템에 적합
  • 멀티유저 환경, 온라인 쇼핑몰, 금융 시스템, ERP 등에 권장

InnoDB는 단순한 저장 공간이 아니라, 데이터를 안전하게 지키는 ‘보안 금고’입니다.

 

댓글