본문 바로가기
MySQL Admin Guide/MySQL Ver.5.1 Admin Guide

1장. MySQL 아키텍쳐 : (3) MySQL Storage Engine별 특징

by 모모레 2009. 2. 18.
MySQL에서는 서비스 특성에 맞게 다양한 스토리지 엔진을 사용할 수 있다.

다음의 표는 MySQL에서 제공하는 레퍼런스에 나와있는 내용을 발췌한 것이다.
http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html

사용자 삽입 이미지

[표 1-1]

[표 1-1]에 나와 있는 스토리지 엔진은 가장 많이 사용되는 스토리지 엔진에 대한 내용만 들어 있다.

위의 표에 나와 있는 스토리지 엔진 외에 아래와 같은 스토리지 엔진도 default로 사용이 가능하다.

  • Merge
  • Federated
  • CSV
  • Blackhole
  • Example

그러면 [표 1-1]에 기술된 스토리지 엔진 중 몇개의 스토리지 엔진만 간단히 살펴 보도록 하자.

1. MyISAM

MyISAM 테이블은 MySQL의 가장 기본이 되는 스토리지 엔진으로서, MySQL의 dictionary database인 mysql이 모두 MyISAM 테이블로 구성된다. 다시 말해 mysql database는 모두 MyISAM으로만 구성되어져야 한다. 이 스토리지 엔진은 B-tree, R-tree, Full-text 인덱스를 모두 지원하고, 특정 인덱스에 대한 메모리 캐쉬도 지원한다. 또한 데이터 압축도 지원하기 때문에 데이터 압축이 가능한 테이블에 한해 압축하여 사용할 수도 있다. 그리고 이 스토리지 엔진은 table lock을 사용하며, 트랜잭션은 지원하지 않는다.

2. InnoDB

InnoDB 스토리지 엔진은 트랜잭션을 지원하는 가장 기본이 되는 스토리지 엔진으로, 오라클 DBMS와 가장 유사하게 데이터를 관리하는 스토리지 엔진이다. B-tree와 Clustered index를 지원하고, foreign key를 지원하고, MyISAM과 다르게 Row level locking을 사용한다. 오라클과 비슷하게 자동 에러 복구 기능이 있고, 툴을 사용하여 백업 및 특정 시점으로의 복구가 지원된다. 또한, 특정 데이터와 인덱스에 대한 메모리 캐쉬 지원도 가능하다.

3. NDB (Cluster DB)
NDB는 흔히 Cluster DB라고 불리워 지며, MySQL Cluster를 구성할때 사용하는 스토리지 엔진이다. 이 스토리지 엔진은 트랜잭션을 지원하며, 모든 데이터와 인덱스가 메모리에 존재해야 하는 스토리지 엔진인다, 버젼 6.2 부터는 디스크에 테이블 스페이스를 만들어서 저장하는 것이 가능하다. B-tree인덱스와 hash index 생성이 가능하고, Primay Key 사용시 최상의 속도를 나타내는 특징을 가지고 있다. 또한 온라인 백업이 가능하다.

4.Federated
Federated 스토리지 엔진은 Version. 5.0에서 새롭게 도입된 스토리지 엔진으로 다수의 물리적 데이터베이스에 대한 하나의 논리적 데이터베이스를 생성하여 사용하는 스토리지 엔진을 말한다. 다시 말해 하나의 데이터베이스에서 다른 타켓 오브젝트로의 포인터 역할을 하는 스토리지 엔진이다. 원격 데이터 접근을 위한 특별한 미들웨어가 필요하지않고, 설정으로만 접근이 가능하다. 실행 속도는 네트워크 요소에 따라 차이가 발생한다.