Print
카테고리: [ MariaDB ]
조회수: 13827

1. 개요

먼저 이해해야 할 것은 크게 DB Engine과 Storage Engine으로 구분된다는 것이다. 실제 A-C-I-D는 Storage Engine에서 구현된다. 


2. MyISAM

에전 MySQL은 MyISAM을 Storage Engine으로 사용하였다. MyISAM은 블로그나 게시판성 시스템과 같이 Write보다 Read가 많은 시스템에 적합하다. 다시 설명하자면 Single-append, Multi-read 인 경우이다. 이 때는 myisampack을 이용하여 Read-only용 압축 테이블을 유지할 수 있어 디스크 용량 측면에서도 유리하다.


3. InnoDB

3-1. 소개

InnoDB는 Transaction-safe한 Storage Engine으로 2005년 Oracle이 Innobase를 인수한 후 Oracle의 일부가 되었으며, MySQL 5.5 이후 기본적으로 사용되고 있다. 즉 5.5 이전에서는 MyISAM이 기본이었다는 이야기다. MyISAM과 유사한 면이 있지만 보다 많은 기능을 제공한다. (MVCC 지원, ACID Transaction 처리, FK 지원, row-level lock 등) 또한 Undo, Tablespace 등 Oracle의 개념을 많이 수용하고 있다.

사용 정책의 경우 듀얼 라이선스 정책을 취하고 있는데 GNU GPL이면서도 상업적인 용도로 판매 가능하다.

InnoDB는 MyISAM 대비 동시처리에 효과적인 구조로 되어 있다. 예를 들어 MyISAM은 Table과 Index를 각각 다른 파일로 관리하는데 반해 InnoDB는 Tablespace 개념을 사용한다. 

[ MyISAM의 각 테이블 별 파일 ]

3-2. 단점

물론 장점만 있는 것은 아니다. InnoDB는 더욱 많은 메모리와 디스크를 사용한다. 또한 데이터가 깨졌을 때  단순 파일 백업/복구만으로 처리가 가능한 MyISAM과 달리 InnoDB의 경우 복구 방법이 어렵다. MyISAM이나 Memory 방식이 지원하지 않는 FK의 경우도 테이블 간 데이터 체크로 인한 lock, 특히 dead lock이 발생할 가능성이 있다.

3-3. 설정

만약 MySQL 5.5 이상에서 MyISAM 방식을 사용하고자 한다면 다음과 같이 한다.

3-4. 성능

3-5. 기타


4. 기타 Storage Engine

한편 MyISAM, InnoDB 이외에도 Archive, BerkleyDB 등을 사용할 수 있다.