본문 바로가기

Database/MySQL

MySQL 스토리지 엔진 (InnoDB, MyISAM, 그외...)

InnoDB vs MyISAM

What's different? InnoDB MyISAM
Locking Level Row Table
Foreign Key Yes No
Transaction Yes No
Clustered Index Yes No
Full-Text Index Yes (MySQL 5.6~) Yes
Geospatial Index Yes (MySQL 5.7~) Yes
Storage Limit 64TB 256TB

InnoDB

  • 높은 신뢰성과 고성능의 균형을 이루는 범용 스토리지 엔진입니다.
  • 많은 기능을 제공하여 상대적으로 무겁습니다.
  • Row level locking 지원으로 INSERT,UPDATE,DELETE에 유리합니다.
    write가 많은 서비스에서 유리합니다.
  • 테이블과 인덱스를 테이블 스페이스에 저장합니다.

InnoDB 언제 쓰나요?

  • 엔드 유저들의 CRUD가 많은 서비스에 유리해요.
  • 뭘 써야하는지 모르겠을 때 쓰세요...

InnoDB에 대해 깊게 알고 싶으시다면 아래 공식 문서를 참고해주세요.

MyISAM

  • 5.5 버전 이전의 기본 스토리지 엔진입니다.
  • 기본적인 기능을 제공하여 상대적으로 가벼워요.
  • 더 이상 사용할 수 없는 구형 ISAM스토리지 엔진을 기반으로 하지만 유용한 확장 기능이 있다고 합니다.
  • Table level locking으로 INSERT,UPDATE,DELETE 시에 Table 전체 락이 걸립니다.
    그렇기 때문에 write가 많은 서비스에서 불리합니다.
  • 테이블과 인덱스를 별도의 파일로 저장합니다.

MyISAM 언제 쓰나요?

  • 소수의 사람들이 데이터를 생성하고 엔드 유저들이 읽기만 하는 서비스에 유리해요.
    ex) 뉴스, 블로그

MyISAM에 대해 깊게 알고 싶으시다면 아래 공식 문서를 참고해주세요.

그 외

대체 스토리지 엔진들도 있어요.

  • Memory: 데이터를 메모리에 저장하여 속도가 빠르지만 데이터 유실 위험
  • CSV: 쉼표로 구분된 csv 파일을 테이블로 처리
  • Archive: 작은 풋 프린트에서 인덱싱되지 않은 많은 양의 데이터를 저장
  • Blackhole, Merge, Federated, Example 기타 등등

사실 MyISAM도 문서 상으로 대체 스토리지 엔진에 있습니다.

https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html 

 

MySQL :: MySQL 8.0 Reference Manual :: 16 Alternative Storage Engines

Chapter 16 Alternative Storage Engines Storage engines are MySQL components that handle the SQL operations for different table types. InnoDB is the default and most general-purpose storage engine, and Oracle recommends using it for tables except for specia

dev.mysql.com