[mysql] MyISAM vs InnoDB

김주경·2020년 12월 7일
0

1. 스토리지 엔진

데이터베이스 엔진이란 데이터를 삽입, 추출, 업데이트, 삭제하는 데 사용하는 기본 소프트웨어 컴포넌트
현대의 많은 DBMS는 동일한 DB내에 다중엔진을 지원한다.

2. MyISAM vs InnoDB

MyISAM InnoDB
구조의 복잡성 간단 복잡
Transaction No YES
Locking의 단위 Table Level Lock Row Level Lock
외래키 지원안함 지원
Full-Text Index 지원 지원안함

3. MyISAM의 특징

Full-text-Indexing을 지원한다. Full-text-Indexing 이란 검색엔진 처럼 자연언어를 이용해 검색할 수 있는 특별한 인덱스로 모든 문자열의 데이터를 저장할 수 있다.

뿐만 아니라 항시 테이블에 ROW_COUNT를 가지고 있기 때문에 SELECT COUNT(*) 명령시 빠른 처리를 보인다.

이처럼 MyISAM은 읽기에 특성화 된 엔진이다. 그렇기 때문에 주로 읽는 것 위주의 기능에 사용하면 좋다.

하지만 Locking의 단위가 row가 아닌 table 단위이기 때문에 쓰고 수정하고 삭제하는 과정이 느리다. 거기에 트랜잭션 처리를 하지 않기 때문에 CRUD에 취약하다. 다시 말해 조회를 위한 엔진이다. 물론 속도는 InnoDB에 비해 빠르다. 하지만 이 역시도 정렬이나, 여러 조건들이 붙어있을 경우엔 InnoDB보다 안 좋은 성능을 보인다.

4. InnoDB의 특징

우선 row-level-locking을 지원한다. 그렇기에 트랜잭선 처리가 필요한 대용량 데이터 처리에 용이하다.
당연히 CRUD가 많은 서비스에서 사용하면 좋다.
외래키를 허용하며 데이터 무결성을 보장한다.

하지만 단순 select 기능에서는 MyISAM에 비해 안 좋은 성능을 보이며 데이터 모델 디자인에 많은 시간을 요구한다. 또한 시스템 자원을 많이 사용하기도 한다.

profile
안냐세온

0개의 댓글