본문 바로가기

프로그래밍&IT/MySQL, Oracle, DB 공통

MySQL 스토리지 엔진

MySQL의 테이블 작성의 기본인 스토리지 엔진을 알아보자.


MySQL의 스토리지 엔진을 알아야 할것같다는 생각이 듭니다.

여태까지 Oracle, MsSQL위주로 업무를 했고 (잘 하진못하지만...)

MySQL은 개인적으로 쓰기위해서 배우고 있는데


쌓이는 데이터 특성에 따라

테이블의 스토리지엔진을 각기 설정해서 써야할것같습니다.


foreign key를 쓰기위해선 기본적으로 InnoDB의 스토리지 엔진을 써야한다는건 이번에 봤네요...



show engines;

현재 설치돼있는 MySQL 서버에서 지원되는 스토리지 엔진 확인


위의 Support 컬럼별 설명

 Yes

 해당 스토리지엔진이 포함돼있고, 사용 가능으로 활성화된 상태

Default

"YES"와 동일한 상태지만 필수 수토리지 엔진임 의미
즉 이 스토리지 엔진없으면 MySQL이 시작되지 않을 수도 있음 의미)

No

 현재 해당 스토리지 엔진이 포함되지 않았음 

Disabled 

 해당 스토리지 엔진이 포함됐지만 파라미터에 의해 비활성화 된 상태


플러그인 형태로 빌드된 스토리지 엔진 라이브러리를 다운받아 끼워넣기만 하면 사용가능하다

show plugins;



InnoDB 와 MyISAM  스토리지 엔진

- MySQL 5.5부터 InnoDB가 기본 스토리지 엔진으로 채택.

기존의 MyISAM에 비해서 많은 특징과 기능을 가지고 있다고 합니다.

(개인적으로 Master성은 MyISAM, History성은 InnoDB를 쓸거라 생각했는데 계속 혼동되네요...)


- MyISAM 전문검색기능이 있지만 요즘은 스핑크스, 트리튼같은 전문검색 서드파티 S/W를 많이 사용

- 단지 설정 튜닝이 아주 조금 까다롭다 정도?


읽기 방법

성능 비교

프라이머리 키
(데이터 파일 읽기 포함)

InnoDB가 6~9%정도 빠름

보조 인덱스

64개 이하 동시 스레드에선 비슷.
그 이상 동시 스레드에선 InnoDB가 400~500% 빠름

프라이머리 키
(커버링 인덱스)

성능 차이 없음

프라이머리 키 레인지 스캔
(일부 범위)

InnoDB가 200~2600% 빠름

프라이머리 키 레인지 스캔
(전체 범위)

256개 동시 스레드이하에선 InnoDB가 30%정도 빠름
그 이상에선 MyISAM이 5%정도 빠름

풀 테이블 스캔

InnoDB가 20%정도 빠름

등 등의 차이


결과적으로 InnoDB가 어느정도 우세


개인적으로 스타트업과 관련되어서

계속 학습해야 할 것같습니다.