데이터베이스 엔진이란? 데이터베이스 관리 시스템 즉 DBMS에서 데이터베이스에 대해 삽입, 추출 그리고 업데이트와 삭제를 하는 데 사용하는 기본 소프트웨어 컴포넌트야 ! 데이터베이스 엔진은 DB에서 어떠한 방식으로 저장하고 접근할 지에 대한 기능을 제공해주는데, 데이터베이스 엔진은 크게 2가지로 서버 엔진스토리지 엔진으로 나뉘게 돼!

 

서버 엔진사용자가 질의했을때, Query Parsing과, 스토리지 엔진에 데이터를 요청하는 작업을 수행하며, 

스토리지 엔진물리적 저장장치에서 데이터를 읽어오는 역할을 담당해.

 

MySQL은 다중 데이터베이스 엔진을 지원하는데, 눈여겨봐야할 MyISAM과 InnoDB는 스토리지 엔진에 속해.

여러 개의 데이터베이스 엔진이 똑같으면 하나만 쓰면 되는데, 여러 가지가 있다는 것은 각 각 엔진마다 특징들이 있다는 소리 ! 그렇기에 MyISAM과 InnoDB도 각각의 개성을 가지고 있어.

 

MyISAM의 가장 큰 특징은 데이터 모델 디자인이 단순하기에 InnoDB보다 빠른 읽기 속도, 그 중 select 작업이 상당히 빨라. 그리고 Full-text 인덱싱이 가능해 검색한 내용에 대해 복합 검색이 가능해 !

 하지만 Table-Level Lock, 즉 테이블 단위로 로킹을 하기 때문에, insert, update, delete 속도가 느리며, 트랜잭션의 지원이 없어, InnoDB에 비해 참조 무결성 제한과 동시성 보장에 대해 약한 면을 가지고 있어.

 

InnoDB의 장점은 트랜잭션과 외래 키 지원 그리고 행 단위로 로킹을 할 수 있다는 점이야. MyISAM과 달리 데이터 무결성 보장, Commit, Roll back, 동시성 제어를 지원해 !

 하지만 MyISAM보다 더 많은 기능을 제공하기에 보다 데이터 저장 비율이 낮고, 데이터 로딩 속도가 느리며,스템 자원을 많이 소비하지. MyISAM에서 사용하는 Full-text 인덱싱을 사용할 수 없어

 

 이 둘의 비교는 MyISAM은 가볍고 빠르며, 쓰기보단 select같은 읽기 작업에 최적화 되어있고, InnoDB는 무겁고 느리지만 다양한 기능이 있어, update, inserte, delete 등 쓰기 작업과 트랜잭션 처리에 최적화 되어 있어.

 

 간단한 게시판을 만들 때 필요한 데이터베이스 엔진을 고를 때, 무엇을 고른다면 나는 MyISAM을 고를 것 같아.

내가 만든 간단한 게시판의 경우는 질의문의 5~60 %가 select문이고, 게시판 내용의 속성이 text로 되어있기 때문이야.

 하지만 많은 인원이 사용하고, 많은 인원이 사용하는 프로젝트에서는 InnoDB를 이용하는 게 더 적절하다고 생각해. 트랜잭션 처리에 이상이 생길 확률이 줄어들 수 있으니깐

+ Recent posts