본문 바로가기
DB/MySQL

MySQL 스토리지 엔진 MyISAM과 InnoDB의 차이점

by 가므자 2012. 3. 27.

MyISAM과 InnoDB를 구분하는 가장 큰 특징은 트랜잭션 관리 지원 유무로 볼 수 있을 것 같다.

즉 트랜잭션처리가 필요하고 높은 퍼포먼스를 요구하는 대용량 사이트 등에서는 InnoDB 사용이 효율적이고, 반면 트랜잭션 처리가 필요없고, 주로 DB 조회(read) 작업이 많은 소규모 사이트인 경우 MyISAM이 효율적일 것이다.

http://blog.naver.com/leeyangachi?Redirect=Log&logNo=30035817140 " MySQL 스토리지 엔진 MyISAM과 InnoDB의 차이점"

http://blog.naver.com/paradox1573?Redirect=Log&logNo=40027258413 "MyISAM과 InnoDB의 차이점과 성능비교"

MyISAM is the default storage engine for the MySQL relational database management system

ISAM stands for Indexed Sequential Access Method, a method for indexing data for fast retrieval. ISAM was originally developed by IBM for mainframe computers.

InnoDB main enhancement over other storage engines available for use with MySQL is ACID-compliant transaction support, similar to PostgreSQL, along with foreign key support (declarative referential integrity).

대표적으로 MyISAM과 InnoDB가 많이 사용되며, MyISAM은 주료 SELECT가 많은 업무에 효과적이며, InnoDB는 데이터 변경이 많은 업무에 효과적입니다

MyISAM은 속도가 빠른반면 transaction을 지원하지 않고,

InnoDB는 속도가 느린반면 transaction을 지원합니다

MyISAM에서는 transaction을 지원하지 않기 때문에 commit을 하지 않아도 자동 오토커밋입니다

transaction을 사용하기 위해서는 InnoDB를 사용해야 합니다

 

MyISAM : 비-트랜젝션-세이프(non-transactional-safe) 테이블을 관리한다. 이 엔진은 전체 문장 검색 능력 뿐만 아니라, 고-성능 스토리지 밀 복구 기능을 제공한다. MyISAM은 모든 MySQL 구성에서 지원되며, 여러분이 MySQL을 다른 타입의 엔진으로 디폴트 구성하지 않는 한 이 엔진이 디폴트 스토리지 엔진으로 구성

1) 예전의 MySQL 의 Storage Engines 으로 MyISAM 을 사용했었습니다.
예를 들자면 블로그라던지, 게시판 처럼 한사람이 글을 쓰면 다른 많은 사람들이 글을 읽는 방식에
최적의 성능을 발휘를 하지요. 지금도 많이 사용하고 있는 방식입니다.

2) 제공하는 웹서비스다 그닥 크지 않다면 이것을 사용해도 괜찮다고 생각을 합니다

InnoDB 및 BDB 스토리지 엔진은 트랜젝션에 안전한 테이블을 제공한다. BDB는 이 엔진을 지원하는 OS상의 MySQL-Max 바이너리 배포판에 포함되어 있다. InnoDB는 또한 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다. 소스 배포판의 경우, 여러분의 MySQL을 구성할때 선호하는 방식에 따라서 각각의 엔진을 활성화 또는 비활성화 시킬 수가 있다.

1) 트랜잭션-세이프 스토리지 엔진입니다.

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

3) 다수의 사용자 동시접속과 퍼포먼스가 증가하여 대용량 데이터를 처리할 때 최대의 퍼포먼스를 내도록 설계되었습니다.
CPU효율은 어느 디스크 기반의 데이터 베이스와 비교해도 손색이 없고
자체적으로 메인 메모리 안에 데이터 캐싱과 인덱싱을 위한 버퍼 풀(pool)을 관리합니다.

4) 테이블과 인덱스를 테이블 스페이스에 저장을 하고 테이블 스페이스는 몇개의 서버파일이나 디스크 파티션으로
구성되어있습니다. 이것은 MyISAM 과 다른 점인데, MyISAM은 테이블과 인덱스를 각각 분리된 파일로 관리합니다.
여기서 중요한것이 이제 InnoDB 를 제대로 사용을 하기 위해서는 테이블 스페이스 라는 개념을 파악을 하셔야합니다.
이것에 대해서는 밑에서 따로 언급을 하겠습니다.

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

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

'DB > MySQL' 카테고리의 다른 글

MYSQL DB복구강좌myisamchk 2편  (0) 2012.03.27
MYSQL DB복구강좌myisamchk 1편  (0) 2012.03.27
Mysql 유틸리티  (0) 2012.03.27
중복 데이터의 포함 설계 지침  (0) 2012.03.27
Database 결정자(Determinant)  (0) 2012.03.27

댓글