관리 메뉴

기억하기 프로젝트

mysql 엔진 MyISAM과 InnoDB 차이 본문

개발이야기/Database

mysql 엔진 MyISAM과 InnoDB 차이

sy89 2016. 5. 27. 10:04

내 머리도 휘발성 메모리 ㅜㅜ 자꾸 잊어서, 다시 한 번 기억하며 기록해 보자!


 MyISAM     VS     InnoDB


Mysql의 스토리지 엔진으로 가장 많이 사용하는 MyISAM, InnoDB의 차이를 알아보자.

결론적으로 얘기하자면 트랜잭션 처리가 필요하고 대용량의 데이터를 다루기 위해서는 InnoDB가 효율적이고, 반면 트랜잭션 처리가 필요없고 운영에 Read only 기능이 많은 서비스일수록 MyISAM 엔진이 효율적이다.

한마디로 MyISAM은 SELECT가 많은서비스에, InnoDB는 데이터의 변화가 많은 서비스에 적합하다 할 수 있다.


좀 더 풀어서 이야기 해 보자.


1. MyISAM

MyISAM은 항상 테이블에 ROW COUNT를 가지고 있기 때문에 SELECT count(*) 명령시 빠르고, 

SELECT 명령시에도 빠른 속도를 자랑한다. 또한, 풀텍스트 인덱스를 지원하는데

여기서 풀텍스트 인덱스는 검색 엔진과 유사한 방법으로 자연 언어를 이용해 검색할 수 있는 특별한 인덱스로 모든 데이터 문자열의 단어를 저장한다.

그렇기 때문에 Read Only기능이 많은 서비스일 수록 MyISAM엔진이 효율적이라 할 수 있다.

단점으로는, row level locking을 지원하지 못해, select insert update delete시 해당 Table 전체에 Locking이 걸린다.

(row의 수가 커지면 커질수록 속도는 엄청나게 느려진다는 단점!)


2. InnoDB

장점으로는... MyISAM의 단점으로 있었던 row level locking이 지원된다. 그렇기 때문에 트랜잭션 처리가 필요한 대용량의 데이터에 유리한 점이 있어서, 뭐 예를 들자면 사용자의 CRUD가 많은 서비스에 유리할 것 같다 (필자가 담당하고있는 서비스의 대부분의 스토리지 엔진도 InnoDB인데)

단점으로는, MyISAM의 장점인 풀텍스트 인덱스를 지원하지 못한다고 한다.



그리고 용도에 따라 스토리지 엔진을 결정하는데, MyISAM과 InnoDB 테이블을 같이 사용할 경우, 조인시 주의해야한다고 함.



참고자료 : http://barnak.tistory.com/52

'개발이야기 > Database' 카테고리의 다른 글

Synonym 개념 정리  (0) 2015.01.18