MyISAM, InnoDB

namkun·2023년 6월 6일
0

T-I-L

목록 보기
13/20

MyISAM, InnoDB

mySQL을 써봤다면 위의 단어들을 들어봤을 것이다.
둘 다 mySQL의 Storage Engine이며, 아마 가장 흔하게 사용되는 것들일 것이다.

두 디비의 특징은 다음과 같다.

MyISAM

MyISAM 스토리지 엔진은 다음과 같은 특징을 갖는다.

  • mySql의 5.5 버전 이전에는 기본 스토리지 엔진이었다.
  • InnoDB에 비해서 상대적으로 가볍다.
  • Table Level Locking 으로 인해 Insert, Update, Delete 시에 Table 전체에 Lock이 걸린다. (row가 많아질 수록 처리 능력은 떨어진다..)
  • Table과 Index를 별도의 파일로 저장한다.
  • 검색(Select) 작업 처리 능력이 아주 좋다.
  • 풀 텍스트 인덱스를 지원한다.
    • 검색 엔진과 유사한 방법으로 자연 언어를 이용해 검색할 수 있는 특별한 인덱스로 모든 데이터 문자열의 단어를 저장한다.

MyISAM 스토리지 엔진은 다음과 같은 상황에서 효율적이다.

  • 트랜잭션 처리가 필요없음
  • Read Only 기능이 많은 서비스가 많은 상황
  • 전문 검색이 필요한 테이블
  • 한 번에 많은 데이터를 밀어넣는 배치성 테이블

예를 들면 블로그와 같이 소수의 유저가 데이터를 생성하고, 다수의 유저들은 읽기만 하는 상황에서 유리하다고 생각하면 된다!

InnoDB

InnoDB 스토리지 엔진은 다음과 같은 특징을 갖는다.

  • mySql의 5.5버전부터 기본 스토리지 엔진으로 변경되었다.
  • 많은 기능을 제공하기에 상대적으로 무거운 편
  • Row Level Locking 을 지원해서 Insert, Update, Delete에 유리하다.
  • 테이블과 인덱스를 테이블 스페이스에 저장한다.
  • 외래키를 지원한다.
  • 트랜잭션 처리를 지원한다.
  • 풀 텍스트 인덱스를 지원하지 못한다.

InnoDB 스토리지 엔진은 다음과 같은 상황에서 효율적이다.

  • 트랜잭션 처리가 필요
  • 복구가 필요한 경우
  • 정렬 등의 구문이 들어가는 경우
  • CRUD 와 같은 작업이 빈번하게 일어나는 경우 (데이터의 변화가 잦은 경우)

예를 들면 다수의 사용자가 동시 접속해서 여러 개의 글을 동시에 쓰고, 수정하고, 삭제하는 대규모 커뮤니티 사이트의 경우 유리하다고 생각하면 된다.

profile
개발하는 중국학과 사람

0개의 댓글