MySQL의 스토리지 엔진으로 가장 많이 사용하는 엔진으로는 InnoDB와 MyISAM이 있다.
MyISAM
- MySQL 5.5 이하의 버전에서 기본 스토리지 엔진이다.
- 블로그라던지, 게시판처럼 한 사람이 글을 쓰면 다른 많은 사람들이 글을 읽는 방식에 최적의 성능을 낼 수 있다.
- MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리한다.
- MyISAM의 최대 단점 트랙잭션을 지원하지 않는 것이다.
* 트랜잭션이란?
트랜잭션 도구
START TRANSACTION : COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL추적
COMMIT : 모든 코드를 실행(문제가 없을 경우에)
ROLLBACK : START TRANSACTION 실행 전 상태로 되돌림( 문제가 생기면 )
MyISAM의 장점
- 항상 테이블에 ROW COUNT를 가지고 있기 때문에 SELECT count(*) 명령시 빠르고, SELECT 명령 시에도 빠른 속도를 지원한다.
- 풀 텍스트 인덱스를 지원하는데 그렇기 때문에 Read Only기능이 많은 서비스일수록MyISAM이 효율적이라 할 수 있다. (EX. 게시판, 블로그 보기)
* 풀 텍스트 인덱스란?
검색 엔진과 유사한 방법으로 자연 언어를 이용해 검색할 수 있는 특별한 인덱스로 모든 데이터 문자열의 단어를 저장
단점
- ROW의 수가 커지면 CRUD 속도는 엄청나게 느려진다.
default engine의 변화
MYSQL 5.6부터 MyISAM에서 InnoDB로 변경이 되었다. 이유는 Row-level-Locking인 InnoDB에 비해 Table-level-Locking인 MyISAM은 dml이 많은 시스템에선 한계가 있고 InnoDB의 거듭된 향상으로 속도의 차이가 없을 만큼 빨라져 특별한 이유가 있는 게 아니면 InnoDB의 사용이 권장됨.
InnoDB
- MySQL 5.6에서 기본 엔진은 InnoDB이다. ENGINE옵션에서 다른 엔진 이름을 언급하지 않으면 기본 스토리지 엔진이 사용된다.
- MyISAM 대비 다음의 장점이 있다.
- 트랜잭션 지원
- 데이터 무결성 보장
- COMMIT
- ROLLBACK
- 동시성 제어
- Foreign Key 지원 (외래 키) - 선언적 참조 무결성
- Row Level Locking - 다중 사용자 동시성과 성능을 높인다. InnoDB의 잠금은 트랜잭션이 커밋되거나 중단될 때 해제된다.
단점
myisam 보다 많은 용량을 차지한다. 데이터를 삭제해도 용량이 줄지 않는다.
innodb가 유리한 점
- 대용량의 데이터를 컨트롤하는 경우
- 트랜잭션 관리가 필요한 경우
- 복구가 필요한 경우
- order by 등 정렬이 필요한 경우
- insert, update, delete 등이 빈번하게 발생하는 경우(row-level-locking)
MyISAM이 유리한 점
- select 위주의 작업만 필요한 경우
- 전문 검색이 필요한 경우
- 트랜잭션이나 복구 등이 필요 없는 경우
- 한 번에 대량의 데이터를 입력하는 배치성 테이블
위 사항들을 유의하여 본인에 맞는 db엔진을 정하면 되겠다.
https://www.w3resource.com/mysql/mysql-storage-engines.php
https://velog.io/@gillog/DBInnoDB-VS-MyISAM
'Cs' 카테고리의 다른 글
22. CSS - Transition/ Animation (애니메이션 효과) (0) | 2022.05.17 |
---|---|
21. PYTHON Instagram Crawling with Selenium(셀레니움으로 인스타 크롤링하기), Colab (2) | 2022.05.11 |
19. php: The Right Way - S.O.L.I.D (0) | 2022.05.10 |
18.리눅스(Linux) 쉘 스크립트(Shell Script) - DB 백업 스크립트 - 파일 외부 복사/전송(rsync) - SCP대체 Rsync (0) | 2022.04.28 |
17. 리눅스(Linux) 쉘 스크립트(Shell Script) - DB 백업 스크립트 - Mysql_config_editor (0) | 2022.04.28 |