TIP게시판

제목 myISAM와 innodb 엔진의 차이점을 잘 설명해놓은 글이 있네요
글쓴이 일용직노동자 작성시각 2015/06/19 10:51:02
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 19597   RSS
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는 높은 퍼포먼스가 필요한 대용량 사이트에 적합합니다.

출처 : http://www.mysqlkorea.com/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=1702
 다음글 FirePHP 사용시 콘솔창 파일:라인 출력오류 수정 (2)
 이전글 strace 를 이용한 php 디버깅 (1)

댓글

변종원(웅파) / 2015/06/19 15:33:17 / 추천 0
innodb 단점 하나 추가하자면 한번 커진 데이터파일의 사이즈가 줄어들지 않습니다.
myisam은 데이터량에 따라 파일크기가 달라지는데 innodb는 데이터가 줄어들어도 최종 사이즈를 그대로 유지합니다.

20만건 1G 사이즈였다가 10만건을 삭제해도 innodb 사이즈는 1G입니다.

정답은 아니지만 트랜잭션이 필요하냐 아니냐에 따라 선택을 하곤 합니다.

 
/ 2015/06/19 16:25:46 / 추천 0
웅파 //
아 innodb 쓰면 개발하기 편해서 썼었는데, 저런 단점이 있는줄 몰랐네요 감사합니다.
일용직노동자 / 2015/06/19 22:24:22 / 추천 0

웅파//
저도 오늘 처음 알았습니다. 한번 커진 데이터 파일의 사이즈가 안 줄어든다니 ㄷㄷ;