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
'Database > MySQL' 카테고리의 다른 글
Docker MySQL for Kitematic (0) | 2019.10.24 |
---|---|
Docker MySQL 설치, 접속, 자동 재시작 (0) | 2019.10.24 |
MySQL 사용자 계정 권한 조회/추가/수정/삭제 (0) | 2019.08.26 |