Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이열매의 메모장

InnoDB와 MyISAM 의 차이점 본문

데이터베이스

InnoDB와 MyISAM 의 차이점

이열매 2019. 11. 5. 14:13

개요


 MySQL에서 기본으로 설치하는 엔진에는 InnoDB, MyISAM, MERGE, MEMORY, CSV 엔진이 있다. 이외에도 추가 옵션을 통하여 설치 및 사용 가능하도록 MySQL은 다양한 스토리지 엔진을 지원한다. 이중에서 MyISAM 과 InnoDB는 가장 대표적이라고 볼 수 있는데, MySQL 5.5 버전 이전까지 사용한 엔진이 MyISAM 이고, 5.5 버전 이후의 MySQL 에서는 기본적으로 InnoDB를 사용하기 때문이다. 여기서는 이 두 엔진의 차이점에 대해서 간략하게 알아보도록 하자.

 

 

MySQL


 MySQL은 멀티 유저 환경에서 데이터 접근 및 변경, 관리를 하는 소프트웨어다. 전세계적으로 가장 많이 사용되고 있는 오픈 소스 DBMS 중 하나지만, 2010년에 오라클이 MySQL AB사를 인수하면서 오픈 소스의 장점을 제대로 유지하지 못하였다. 이에 따라, MySQL을 기반으로 새롭게 탄생한 오픈 소스 DBMS가 MariaDB이다. 서버에서 가장 점유율이 높은 것은 5버전대이다.

 

 데이터베이스 관리를 위하여 MySQL 서버는 크게 두 가지 구조로 나뉜다. 바로 MySQL 엔진스토리지 엔진이다. 하단 그림에서 Pluggable Storage Engines를 제외한 모든 부분이 MySQL 엔진이다. 이를 통해 짐작할 수 있듯이, 스토리지 엔진은 디스크에 데이터를 저장하거나 읽는 역할을 수행하고, 나머지 기능은 MySQL 엔진이 수행한다고 보면 된다. 즉, MySQL 엔진은 SQL 처리 및 최적화, 보조 메모리 통신과 같이 데이터베이스의 일반적인 주 기능을 담당한다.

 스토리지 엔진은 Pluggable 하다. 즉, MySQL에서 사용하는 테이블에 따라 더욱 효율적인 엔진을 사용한다는 의미이다. 앞서 말했듯이 5.7버전에서 기본으로 탑재하는 엔진에는 InnoDB, MyISAM, MERGE, MEMORY, CSV 엔진이 있다.

 

 

MySQL 서버 구조

 

 


 

 

MyISAM vs InnoDB


 그래서 대표적인 스토리지 엔진인 MyISAM과 InnoDB의 차이점은 무엇일까? 짧게 말하자면, 단순 조회 작업이 많을 경우엔 MyISAM을 사용하고, 좀 더 복잡한 대용량 데이터 처리 시 InnoDB를 사용한다.

 

 MyISAM은 가볍다. 상대적으로 적은 디스크와 메모리를 사용하며, InnoDB에 비하여 요구하는 서버 사양 또한 낮다. 또한 InnoDB에 비해 (인덱스를 사용하지 않을 경우)SELECT 검색 속도가 빠르다.

 그러나 구조가 단순한 만큼 지원하는 기능이 적다. 데이터 무결성을 보장하지 않고, 트랜잭션 또한 지원하지 않는다. 또한 테이블 단위로 잠금 기능을 사용한다.

이는, 다중 사용자 환경에서 한 사용자가 어떠한 테이블의 데이터를 읽을 경우, 다른 사용자 또한 해당 테이블에 대해 읽기 작업만 수행 가능하다는 의미이다. 심지어 기존 사용자가 해당 데이터를 수정할 경우, 다른 사용자는 그 테이블에 접근조차 하지 못하고 대기해야만 한다. 이로 인해, MyISAM은 데이터 쓰기 작업이 잦은 경우에 권장되지 않는다.

 

 InnoDB는 MyISAM과 상반된다. 많은 기능을 지원하며, 그에 따라 DB 성능을 맞추기 위해 고사양의 서버를 요구한다. 상대적으로 느린 속도 대신에 InnoDB는 데이터 무결성을 보장한다. 트랜잭션을 지원하고, 외래키, Constraint 등의 다양한 기능 또한 지원한다. 또한, 행 단위로 잠금 기능을 사용한다.

 

 

 

InnoDB

MyISAM

MySQL 5.5 이후 기본 스토리지 엔진

MySQL 5.5 이전 기본 스토리지 엔진

데이터 무결성(트랜잭션 포함) 지원

데이터 무결성 지원 X

행 단위 잠금

테이블 단위 잠금

외래키 지원

제약조건 지원 X

Full-text 인덱싱 불가능

Full-text 인덱싱 가능

 

 

 

 


참고링크

 

 

 

 

 

 

 

 

 

Comments