학과 데이터베이스를 수강하고 다른 개발 수업을 들어오면서 항상 오픈소스 기반의 DB인 mysql을 사용해 왔다.
하지만 이 mysql의 DB에도 스토리지 엔진의 종류가 있고 그러한 엔진에 따라 다른 퍼포먼스를 낼 수 있다는 것은 최근에 알게 되었다.
그러한 엔진들 중 대표적 엔진 두 가지가 바로 InnoDB와 MyISAM이다.
지금까지 사용해 온 DB엔진은 InnoDB엔진으로 아무것도 모르고 선택하여 사용하고 있었다.
둘 중 MyISAM 엔진이 더 먼저 등장하였고 많은 사용자들이 사용해 왔다.
속도면에서는 문제 될 것이 없는 MyISAM 이지만 트랜잭션 처리가 안되기 때문에 InnoDB가 탄생하게 되었다.
일단 크게 두 엔진의 차이를 살펴보자
MyISAM
탄생 : InnoDB보다 더 먼저 등장
속도 : 빠르다
트랜잭션 처리 : 불가능(항상 오토커밋)
락 : 테이블 단위
주요용도 : 로그 등의 단순 데이터 적재에 효과적으로 사용
백업 : 테이블 단위의 hot Backup(파일복사)가 유용하다. 테이블 파일만 있더라도 복구가 가능하다
InnoDB
탄생 : MyISAM보다 후에 등장
속도 : 느리다
트랜잭션 처리 : 가능(commit, rollback 등)
락 : 행단위
주요용도 : 다중 사용자가 접속하는 등의 환경에 적합
백업 : 데이블 단위의 hot Backup(파일복사)가 불가능하고, mysqldump나 데이터 베이스 전체적인 복사가 필요하다
백업에 반드시 메인 sharedDB 파일도 같이 이루어 져야 한다
그 외의 지원내역 : 외래키 지원
대략적으로 어떠한 차이점이 존재하는지 엔진별로 나열하여 살펴보았다.
용도에 따라 MyISAM과 InnoDB를 혼용하여 사용하기도 하지만 되도록이면 사용하지 않는 것이 좋다.
두 개의 테이블을 조인하여 사용하다 MyISAM에 테이블 락이 걸리면 InnoDB에도 영향을 미칠 수 있기 때문이다.
'DB' 카테고리의 다른 글
[DB] MySQL - 권한 할당 및 해제[GRANT/REVOKE] (0) | 2011.06.07 |
---|---|
[DB] Oracle - INDEX 에서의 PCTFREE와 PCTUSED (0) | 2011.04.26 |
[DB] Oracle - Bitmap INDEX (0) | 2011.04.24 |
[DB] Oracle - B tree INDEX (1) | 2011.04.21 |
[DB] MySQL - mysqldump 명령어 (0) | 2011.02.15 |