[MySQL]InnoDB VS MyISAM

gillog·2021년 1월 25일
2

DataBase

목록 보기
16/25

🙆‍♂️ import 🙇‍♂️

mysql 엔진 MyISAM과 InnoDB 차이[기억하기 프로젝트]

myISAM와 innodb 엔진의 차이점[CodeIgniter 한국 사용자 포럼]


InnoDB VS MyISAM

MySQL의 스토리지 엔진으로 가장 많이 사용하는 엔진으로는 InnoDBMyISAM이 있다.

InnoDB 엔진트랜잭션 처리가 필요하고 대용량의 데이터를 다루는 부분에서 효율적이고,
MyISAM 엔진트랜잭션 처리가 필요 없고, Read only 기능이 많은 서비스일수록 효율적이다.

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

용도에 따라 InnoDBMyISAM 스토리지 엔진을 결정하는데, InnoDBMyISAM 테이블을 같이 사용할 경우, 조인시 주의해야한다

InnoDB

InnoDBBDB 스토리지 엔진트랜젝션에 안전한 테이블을 제공하는 트랜잭션-세이프 스토리지 엔진이다.

InnoDB는 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다.

MyISAM과 비슷하지만 ORACLE처럼 많은 기능을 지원한다.
commit, rollback, 장애복구, row-level locking, 외래키 등

다수의 사용자 동시접속과 퍼포먼스가 증가하여 대용량 데이터를 처리할 때 최대의 퍼포먼스를 내도록 설계되었습니다.

CPU 효율어느 디스크 기반의 데이터 베이스와 비교해도 우수하고, 자체적으로 메인 메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀(pool)을 관리한다.

MyISAM 과 다른 점으로 테이블과 인덱스를 테이블 스페이스에 저장을 하고 테이블 스페이스는 몇개의 서버파일이나 디스크 파티션으로 구성되어있습니다.
MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리

InnoDB 테이블OS의 파일 사이즈 한계가 2GB이더라도 상관없이 어느 크기나 가질 수 있다.

InnoDB높은 퍼포먼스가 필요한 대용량 사이트에 적합합니다.


InnoDB의 장점으로는 MyISAM의 단점으로 있었던 row level locking이 지원된다.

그렇기 때문에 트랜잭션 처리가 필요한 대용량의 데이터에 유리한 점이 있어서, 사용자의 CRUD가 많은 서비스에 유리하다.

단점으로는, MyISAM의 장점인 풀텍스트 인덱스를 지원하지 못한다.

MyISAM

MyISAM비-트랜젝션-세이프(non-transactional-safe) 테이블을 관리한다.

전체 문장 검색 능력 뿐만 아니라, 고-성능 스토리지 밀 복구 기능을 제공한다.

모든 MySQL 구성에서 지원되며, 다른 타입의 엔진으로 디폴트 구성하지 않는 한 이 엔진이 디폴트 스토리지 엔진으로 구성된다.

MyISAM은 블로그라던지, 게시판 처럼 한사람이 글을 쓰면 다른 많은 사람들이 글을 읽는 방식에 최적의 성능을 발휘한다.

MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리한다.
InnoDB와 다른점


MyISAM의 장점으로는 항상 테이블에 ROW COUNT를 가지고 있기 때문SELECT count(*) 명령시 빠르고, SELECT 명령시에도 빠른 속도를 지원한다.

MyISAM풀텍스트 인덱스를 지원하는데 그렇기 때문에 Read Only기능이 많은 서비스일 수록 MyISAM이 효율적이라 할 수 있다.
풀텍스트 인덱스 : 검색 엔진과 유사한 방법으로 자연 언어를 이용해 검색할 수 있는 특별한 인덱스모든 데이터 문자열의 단어를 저장

단점으로는, row level locking을 지원하지 못해, SELECT INSERT UPDATE DELETE해당 Table 전체에 Locking이 걸린다.

그래서 row의 수가 커지면 커질수록 CRUD 속도는 엄청나게 느려진다.

profile
🚀 기록보단 길록을 ⭐

0개의 댓글