본문 바로가기
데이터베이스(DB)/MySQL

[MySQL] MyISAM vs InnoDB 비교

by 송기동 2025. 8. 25.
728x90

MySQL에서 데이터를 저장하고 관리하는 방식은 스토리지 엔진에 따라 달라집니다.
대표적인 엔진인 MyISAMInnoDB는 목적과 환경에 따라 선택이 달라져야 하며, 성능과 안정성 측면에서 큰 차이가 있습니다.
이번 글에서는 두 엔진의 특징, 장단점, 그리고 선택 가이드를 정리했습니다.

 

1. MyISAM과 InnoDB 기본 구조 비교

항목  MyISAM  InnoDB
트랜잭션 없음 있음 (ACID 지원)
잠금 단위 테이블 단위 행 단위
외래키(FK) 불가 가능
크래시 복구 취약 자동 복구
읽기 성능 순수 읽기 최적 읽기+쓰기 균형 최적
쓰기 동시성 낮음 높음
인덱스 구조 비클러스터드 PK 기반 클러스터드
FULLTEXT 가능 5.6+ 지원
데이터 캐시 OS 캐시 의존 버퍼 풀 내장

2. MyISAM 엔진 특징

장점

- 순수 읽기 성능 우수, 통계 조회와 분석 테이블에 적합

- 구조가 단순하여 백업과 관리가 용이

- FULLTEXT 검색 지원

- COUNT(*) 즉시 응답

단점

- 트랜잭션 미지원, 롤백 불가

- 테이블 단위 잠금으로 동시 쓰기 취약

- 외래키 지원 불가, 데이터 무결성 보장 어려움

- 서버 크래시 시 테이블 손상 가능


3. InnoDB 엔진 특징

장점

- 트랜잭션 지원, ACID 준수, 롤백 가능

- 행 단위 잠금으로 동시 쓰기 우수

- 외래키 지원, 데이터 무결성 보장

- 서버 크래시 시 자동 복구 가능

- 버퍼 풀 캐시로 성능 안정적

단점

- 단순 읽기 성능은 MyISAM보다 낮을 수 있음

- 버퍼 풀 등 메모리 설정 필요

- 데드락 가능, 트랜잭션 설계 주의 필요

- FULLTEXT 검색은 버전 제한 존재


4. 선택 가이드

InnoDB 사용 추천

- 금융, 주문, 회원 정보 등 데이터 정합성이 중요한 경우

- 동시 쓰기가 많은 게시판, 로그 테이블

- 장애 대비 및 자동 복구 필요

MyISAM 사용 고려

- 읽기 중심, 분석/통계용 테이블

- FULLTEXT 검색 단순 활용 시

- 장애 발생 시 복구가 큰 문제가 되지 않을 경우


5. 운영·성능 팁

InnoDB

- innodb_buffer_pool_size를 메모리 50~70%로 설정

- PK 기반 클러스터드 인덱스 활용

- 트랜잭션 단위 최소화, 갭락과 데드락 방지

MyISAM

- 대량 INSERT 전 DISABLE KEYS, 후 ENABLE KEYS

- 동시 INSERT는 홀 공간이 없을 때 효율적

- 서버 장애 시 myisamchk로 복구 가능


결론

- 기본 엔진은 InnoDB가 권장됩니다.

- 예외적으로 읽기 전용·검색 특화 테이블에만 MyISAM 사용 가능.

- 엔진 선택 시 목적과 환경을 고려하고, 백업과 복구 전략까지 포함한 운영 방안을 마련해야 합니다.

728x90