MyISAM과 InnoDB의 차이점

Posted by 대혀니_
2020. 10. 13. 15:40 IT/잡담

항상 DB를 선택할 때 DB 엔진의 선택은 권장사항에 넘겼기 때문에 자세하게 생각해본 적이 없었는데, 이에 대해 질문을 받았다.

 

최근 프로젝트의 권장엔진은 전부다 InnoDB라서 생각을 못했는데 2010년 이전에는 MyISAM을 사용했던 기억이 있긴 하다. 하지만 그 당시에는 DB개념도 잘 모르던 시절이라..

 

 

 

MyISAM

MyISAM은 테이블 단위로 파일이 이루어져 있기때문에 SELECT가 굉장히 빠르다.

따라서 조회 위주일경우에는 유리하다. 트랜잭션이나 복구작업이 필요 없을 때를 제외한다면 말이다.

 

InnoDB

하지만 order by 같은 정렬을 할경우 InnoDB가 압도적으로 빠르고 트랜잭션을 지원한다.

또한 insert, update, delete 가 압도적으로 빨라서 실제 서비스를 사용할 때는 InnoDB의 단점은 MyISAM의 장점에 비해

압도적으로 적기때문에 많은 사람들이 사용한다.

 

 

예전에 나는 웹 커뮤니티에서 관련 벤치마크만 보여주면서 InnoDB가 이렇기 때문에 무조건 InnoDB를 사용하는 게 당연하다고 하길래 MyISAM에 대해서 별로 생각하지 않았다.

 

하지만 거듭된 발전으로 InnoDB가 MyISAM의 장점을 거의 흡수하기에 이르었고 실제 서비스에서는 각 장점을 생각하여 이를 혼용하는 프로젝트도 있긴 하겠지만 현재는 기본적으로 InnoDB를 우선적으로 사용한다는 점이다.

 

그런 글을 본지 벌써 5년전일인데, 그 당시에는 기본값이 그냥 그렇게 되어있기 때문에 그에 대해서 자세하게 생각해본 적이 없던 거 같다.

앞으로는 왜 이런 방식을 채택하고 기본값으로 제공하는지, 그리고 기본값이 최선인지 확인해보고 결정해야겠다고 생각이 된다.

 

이에 대한 관련글도 있다.

https://xetown.com/questions/1005712

 

데이터가 많을때는 MyISAM 이 좋나요?

하루 30만 레코드 정도 쌓일것같습니다. 크기는 별로 안크고요.. 일단 insert 하면 수정은 없을것같은데.. 나중에 1억건 이상 쌓인다 치면 MyISAM, innoDB중 어느게 좋을까요?

xetown.com

여기에서도 MyISAM을 사용하면 insert가 점점 느려질것이라고 이야기하고 적폐대상이라는 의견까지..

 

사실 내가 두개를 번갈아 사용해본 경험이 없어서 질문에 답하지 못했던거 같다.