http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
공지사항  
뉴스  
질문과 답변
DBA
Developer
Cluster
토크박스  
이벤트  
서포트 티켓  
최신글
mysql 관련해서 …
이제 날씨가 가을…
killed 상태가 너…
mysql 백업/복구 …
apm 설치 헤메고…
 
질문과 답변 (DBA) > 커뮤니티 존 > 질문과 답변 (DBA)
MyISAM과 InnoDB가 어떻게 다른가요?
글쓴이 : 옥자   날짜 : 07-10-08 16:49   조회수 : 25220
스토리지 엔진은 InnoDB가 일반적인거 같습니다.
그런데 InnoDB말고도 다른 엔진들도 많이 있잖아요.
MyISAM과 InnoDB에 대해서 좀 알려주세요.
어떻게 다른지, 언제 어떻게 사용하면 더 효율적인지 궁금합니다.
하동철
뭐 어떤 것이 더 우수하다는 것은 없고요.
어떤 서비스를 하시느냐에 따라서 어떤 엔진을 쓰는 것이 좋은지는 있습니다.
MyISAM과 InnoDB는 가장 대표적이라고 할 수 있는 MySQL의 대표 스토리지 엔진 타입이구요
일단은 아래 그 두 엔진에 대해서 대략적인 설명을 적어 봤습니다.
도움이 되셨으면 하네요.
그럼..

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는 높은 퍼포먼스가 필요한 대용량 사이트에 적합합니다.
조우현
대부분 MyISAM보다 InnoDB스토리지 엔진을 선호합니다. InnoDB는 ACID 트랜잭션, 강제 참조 무결성 (외래 키), 그리고 행 단위의 락(lock)을 지원하기 때문이죠. 그러나 InnoDB는 메모리와 디스크 저장공간을 더 많이 잡아 먹습니다. 그래서 InnoDB의 특별한 기능을 사용하지 않는다면, MyISAM을 선택하는 것이 좋은 것 같습니다.
난나야
1.INSERT 와 SELECT 구문을 주로 사용하는 경우
2.ROLLBACK 트랜잭션을 사용하지 않는 경우
3.테이블을 대규모로 동시에 읽고 쓰지 않는 경우
4.InnoDB 가 제공하는 특별 기능을 사용하지 않는 경우
5.FULLTEXT 인덱스를 사용하는 경우
6.공간적인 컬럼 타입을 사용하는 경우

이런 경우에 MyISAM이 좋습니다. 굳이 무거운 InnoDB 기능 사용 안하실라면....
MyISAM 강추요~
이전글 외부접속오류 
다음글 mysql-nt 명령어 에러네요;;; 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
ⓒ 2010-2011 ssebiz All Rights Reserved.