MySQL 스토리지 엔진

양시준·2022년 3월 30일
4

TIL

목록 보기
17/21

스토리지 엔진이란?

데이터베이스 엔진(database engine) 또는 스토리지 엔진(storage engine)은 데이터베이스 관리 시스템(DBMS)이 데이터베이스에 대해 데이터를 삽입, 추출, 업데이트 및 삭제(CRUD 참조)하는 데 사용하는 기본 소프트웨어 컴포넌트이다.

=> DBMS에 포함되는 컴포넌트로 CRUD를 담당한다. 한 DBMS에 여러 종류의 스토리지 엔진이 존재할 수도 있다.

MySQL의 스토리지 엔진

MySQL에서는 아래와 같은 여러 스토리지 엔진을 지원한다.

  • InnoDB 엔진
  • MyISAM 엔진
  • Memory 엔진
  • Archive 엔진
  • CSV 엔진
  • Federated 엔진

이 글에서는 대표적으로 쓰이는 몇 가지 스토리지 엔진을 간략하게 알아보겠다.

MyISAM

MySQL 5.5 이전까지 기본 스토리지 엔진이다.

특징

  • 커밋, 롤백 및 충돌 복구 기능을 가진다.
  • Table-level Lock을 제공한다.
  • 트랜잭션을 제공하지 않는다.

장점

  • Data를 매우 효율적으로 저장한다.
  • 전체적인 속도가 InnoDB 보다 빠르다.
  • Select 작업 시 속도가 빨라서 읽기 작업에 적합하다.

단점

  • Table-level Lock을 사용하기 때문에 갱신 작업 속도가 느리다.
  • 데이터 무결성에 대한 보장이 되지 않는다.

적합한 상황

  • 트레픽이 많은 웹사이트
  • Data ware house
  • 쓰기작업이 별로 없는 select 위주의 table
  • 정적인 table
  • 로그 table

InnoDB

MySQL 5.5 이후부터 기본 스토리지 엔진이다.

특징

  • 커밋, 롤백 및 충돌 복구 기능을 가진다.
  • 트랜잭션 제공 및 트랜잭션 안전(ACID 호환)을 보장한다.
  • Row-level lock을 제공한다.
  • 외부키(foreign key)를 지원한다.
  • MVCC/Snapshot read를 지원한다.

장점

  • 커밋, 롤백 및 충돌 복구 기능이 MyISAM 보다 뛰어나다.
  • Row-level Lock (행 단위 Lock) 을 사용하기 때문에 갱신 작업 속도가 빠르다.
  • MVCC를 지원해 다중 사용자 동시성이 좋다.

단점

  • 시스템 자원을 많이 사용한다.
    • MyISAM에 비해 더 큰 파일을 사용한다.

적합한 상황

  • 데이터 무결성이 필요한 상황
  • 갱신 위주의 트랜잭션이 요구되는 table

Memory

HEAP 테이블이라고도 부르며 메모리에 데이터를 저장하는 엔진이다.

특징

  • Table-level Lock을 제공한다.
  • 모든 데이터를 RAM에 저장한다.
  • 트랜잭션을 제공하지 않는다.

장점

  • 메모리를 사용하므로 속도가 매우 빠르다.

단점

  • 데이터가 휘발성 메모리에 저장되므로 영속성을 보장하지 않는다.

적합한 상황

  • 주기적으로 집계되는 데이터의 결과 캐시용
  • 데이터 분석 시 중간 결과 저장용
  • JWT 사용 시 RefreshToken 저장용

마무리

이 글에서 설명한 내용은 공식 사이트에 명시된 내용의 일부분일 뿐이고, 언제든지 변경될 수 있다. 그렇기 때문에 실제로 프로젝트에 사용할 스토리지 엔진을 찾기 위해선 공식 사이트를 참고해서 각각의 스토리지 엔진이 지원하는 것과 장/단점을 더 확실히 알아보자.

참고

profile
야크 털 깎기와 러버덕 디버깅을 좋아하는 개발자

0개의 댓글