Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스 엔진(스토리지 엔진)이란? 종류와 확인 방법 총정리


MySQL 데이터베이스 엔진(스토리지 엔진)이란?

스토리지 엔진(storage engine)은 데이터베이스 관리 시스템(DBMS)이 데이터베이스에 저장된 데이터를 생성(Create), 읽기(Read), 갱신(Update)할 때 실제로 사용하는 핵심 소프트웨어 모듈입니다. 같은 MySQL 서버라도 어떤 스토리지 엔진을 선택하느냐에 따라 트랜잭션 처리 방식, 잠금(locking) 단위, 인덱스 구조 등 데이터 처리 방식이 크게 달라집니다.

현재 MySQL 최신 버전의 기본(default) 스토리지 엔진은 InnoDB입니다. InnoDB는 ACID 트랜잭션, 행 수준 잠금(row-level locking), 외래 키(foreign key) 제약 조건을 지원하기 때문에 대부분의 일반적인 웹 애플리케이션과 서비스에 가장 널리 사용됩니다.

SHOW ENGINES 명령어로 지원 엔진 목록 확인하기

MySQL 서버가 지원하는 스토리지 엔진의 전체 목록은 SHOW ENGINES 명령어 한 줄로 간단히 확인할 수 있습니다.

mysql> SHOW ENGINES;

실행 결과는 다음과 같습니다.

EngineSupportCommentTransactionsXASavepoints
MEMORYYES해시 기반, 메모리에 저장되며 임시 테이블에 유용NONONO
MRG_MYISAMYES동일한 구조의 MyISAM 테이블들을 하나로 묶은 컬렉션NONONO
CSVYESCSV 형식으로 데이터를 저장하는 스토리지 엔진NONONO
FEDERATEDNO원격 MySQL 서버의 테이블에 접근하는 연합(Federated) 엔진NULLNULLNULL
PERFORMANCE_SCHEMAYES서버 성능 정보를 수집하는 Performance SchemaNONONO
MyISAMYESMyISAM 스토리지 엔진NONONO
InnoDBDEFAULT트랜잭션, 행 수준 잠금, 외래 키 지원YESYESYES
BLACKHOLEYES/dev/null 엔진 (입력된 모든 데이터가 사라짐)NONONO
ARCHIVEYES데이터 보관용 아카이브 스토리지 엔진NONONO

9 rows in set (0.04 sec)

결과 컬럼 의미

  • Support: 해당 엔진의 지원 여부 (YES / NO / DEFAULT)
  • Transactions: 트랜잭션 지원 여부
  • XA: 분산 트랜잭션(XA 프로토콜) 지원 여부
  • Savepoints: 세이브포인트(트랜잭션 내 부분 롤백 지점) 지원 여부

주요 스토리지 엔진 특징

  • InnoDB: 트랜잭션과 외래 키를 지원하며 충돌 없는 동시성 처리에 강점이 있어 기본 엔진으로 채택되었습니다.
  • MyISAM: 과거의 기본 엔진으로, 읽기 위주 작업에서 빠르지만 트랜잭션을 지원하지 않습니다.
  • MEMORY: 데이터를 메모리에만 저장해 속도가 매우 빠르지만, 서버 재시작 시 데이터가 사라집니다.
  • CSV: 테이블 데이터를 CSV 파일로 저장하여 스프레드시트 등 외부 도구와의 데이터 교환에 유용합니다.
  • ARCHIVE: 로그처럼 삽입 후 거의 조회하지 않는 대량 데이터를 압축 저장하는 데 적합합니다.
  • BLACKHOLE: 입력된 데이터를 모두 버리는 엔진으로, 주로 복제(replication) 테스트나 필터링 용도로 활용됩니다.

이처럼 MySQL은 다양한 스토리지 엔진을 제공하며, 애플리케이션의 요구 사항(트랜잭션 필요 여부, 읽기/쓰기 비율, 데이터 보관 기간 등)에 맞는 엔진을 선택하는 것이 중요합니다.