본문 바로가기
데이터베이스 (Mysql)

MySQL / MyISAM / InnoDB

by 리승우 2022. 12. 31.

1. MySQL의 구조는 어떻게 되어있는가?

아래와 같이 2가지로 구성되어 있다.

1. MySQL 엔진

2. 스토리지 엔진

 

1.1 MySQL 엔진

> 파서, 전처리기, 옵티마이저, 쿼리실행기 등으로 구성되어 있다.

> 사용자의 요청을 받아 쿼리를 검사하고, 스토리지 엔진에게 데이터 읽기 또는 변경에 대한 실행 요청을 한다.

 

1.2 스토리지 엔진

> 데이터 파일로부터 데이터를 읽거나, 데이터를 쓰고 변경하는 작업을 진행한다.

> InnoDB, MyISAM, Maria 등으로 나뉜다.

> 최신버전 MySQL은 기본 스토리지 엔진으로 InnoDB를 채택하고 있다.

 

2. InnoDB VS MyISAM

InnoDB

> InnoDB 엔진은 트랜잭션 처리가 필요하고 대용량의 데이터를 다루는 부분에서 효율적이다.

 

Row-level locking method를 사용한다.

- 해당 메서드는 수정 프로세스에서 테이블의 행만 잠그는 방식으로 동일한 행에 대한 다중 세션 접근을 지원한다.

- 이를 통해 다중 사용자가 접근하는 데이터 베이스에 유용한다

- 하지만 많은 메모리를 필요로하며 조회와 데이터 수정에 대해 시간이 걸린다는 단점이 있다. 

 

=> 트랜잭션 처리가 필요한 대용량 데이터에 유리하며, 사용자의 CRUD가 많은 서비스에 유리하다.

하지만 MyISAM의 장점인 풀텍스트 인덱스를 지원하지 못한다.

 

MyISAM

> MyISAM 엔진은 트랜잭션 처리가 필요 없고, Read only 기능이 많은 서비스일수록 효율적이다.

 

> Table locking method를 사용한다.

- 하나의 사용자만 테이블을 변경할 수 있으며, 만약 다른 사용자가 테이블을 바꾸려 시도하면 테이블이 잠겼다는 응답을 받게 된다.

- 많은 메모리를 요구하지 않기 때문에 읽기 전용 데이터베이스에 유용하다.

 

=> - row level locking을 지원하지 않아, SELECT / INSERT / UPDATE / DELETE 시 해당 테이블 전체에 Locking이 걸린다. 그래서 row의 수가 커질 수록 CRUD 속도는 느려진다.

 

 

한줄로 정리하면, InnoDB는 데이터의 변화가 많은 서비스에, MyISAM은 SELECT가 많은 서비스에 적합하다 할 수 있다.

 

 

'데이터베이스 (Mysql)' 카테고리의 다른 글

MySQL 완전 삭제 후 재설치하기  (0) 2022.12.08
데이터베이스, Mysql (2) /JOIN  (0) 2022.08.05
데이터베이스, Mysql  (0) 2022.08.04

댓글