본문 바로가기
호구지책/DB

[MySQL] Storage Engine

by 하늘의흐름 2016. 1. 22.
반응형

Mysql에는 여러가지 Storage Engine이 있지만 

그 중에서 가장 많이 사용하는 Engine은

MyISAM Engine과 InnoDB Engine 입니다.


두가지는 가장 많이 활용되고 있고, 특징이 다른데요.


MyISAM 비교적 일찍 출시되었고, 기능이 단순합니다.

SELECT할 때 성능이 좋고, INSERT 작업이나 DELETE 작업등을

할 경우에는 성능이 좋지 못합니다.

이유는 TABLE LOCK 때문인데요. 여러사람이 동시에 접속해서

데이터를 편집할 경우, 한 테이블당 한 사람만 편집할 수 있기 때문에

한 사람이 데이터를 수정하면 다른 사람은 데이터가 수정될 때까지

기다려야 합니다.

단순히 조회만 하면 상관이 없지만 편집이 빈번하게 일어 난다면

좋지 않겠지요.

또한 트랜젝션기능을 제공하지 않습니다. 데이터 무결성을 보장하지 않는 것이죠.

따라서 Rollback 이나 commit 같은 것 없이 데이터가 즉시 반영됩니다.

(데이터 무결성은 프로그래머가 직접 작업해서 보완해줘야하지요.)

전체적으로 평하자면, 조회가 잦고, 편집이 적은 곳에 유리한 Engine 입니다.


InnoDB는 MyISAM보다 늦게 출시되었지만, 기능이 강력합니다.

트랜젝션을 지원합니다. 따라서 데이터 무결성을 보장합니다.

그리고 ROW LOCK이기 때문에 한 사람이 하나의 열만 붙잡아서 편집합니다.

따라서 여러사람이 테이블에 접근하여 데이터를 수정할 수 있습니다.

편집이 빈번하게 일어나도 MyISAM때 처럼 사람들이 기다려야 하는 일은

없게 됩니다.

전체적으로 기능이 뛰어나고 충실하여 많이 사용되고 있습니다.

특별한 문제가 없다면 InnoDB Engine이 좋은 선택이 됩니다.



위에 것이 일반적인 내용입니다.

Mysql에서도 5.5 이전까지 기존 Storage Engine은 MyISAM이었습니다.

하지만 5.5 부터는 기본 Engine이 InnoDB로 변경되었습니다.


또한 하나의 Engine이 아니라 두개의 Engine을 테이블을 단위로 섞어서

쓰는 것도 가능합니다. 단지 백업할 때 조금 더 손이 간다고 합니다.


속도면에서 InnoDB 가 조금 떨어지지만, 초당 100 Query씩 날리는 정도가 아니라면

굳이 MyISAM을 쓸 필요는 없지 않는가하는 의견도 있네요.


MySQL Storage Enegin의 양대산맥 InnoDB와 MyISAM

5.5버전부터 변경되었다는 내용의 블로그 글

InnoDB와 MyISAM 비교 고찰(덧글내용)

특성별 요약 정리

반응형

댓글