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 |
댓글