본문 바로가기

DB

MySQL의 Storage Engine

Storage Engine 또는 Database Engine은 DBMS이 DB에 대해 데이터를 삽입,추출,업데이터,삭제 하는데 사용하는 기본 소프트웨어 컴포넌트이다.

MyISAM

  • MySQL의 기본 스토리지 엔진이고, 데이터 저장에 실제적인 제한이 없고 효율적
  • Full-Text 인덱스 지원, 특정 인덱스에 대해 메모리 캐시 지원.
  • 트랜잭션 미지원. Table Lever Lock 지원하여 작업시 테이블 전체에 락이 걸려 다른 사람은 작업 불가.
  • 잦은 변경 및 삭제에는 성능이 좋지 못하나 데드락 발생 예방 가능.
  • 트랜잭션을 지원하지 않기 때문에 작업중 문제가 생겨도 DB로 데이터가 들어간다.
  • 주로 Select 작업이 많은 경우 사용.

 

InnoDB

  • ACID 트랜잭션 지원. MyISAM보다 데이터 저장 비율 낮고 데이터 로드 느리다.
  • 특정 데이터와 인덱스에 대해 메모리 캐시 지원, 외부키 지원.
  • 데이터 압축 불가, 자동 에러 복구
  • Row Level Lock을 지원하여 해당 열만 잠기고 나머지 부분은 다른 사용자가 접근 가능하다.
  • Insert, Update, Delete 빠르기 때문에 데이터 입출력이 빈번하고 높은 퍼포먼스를 요구하는 대용량 사이트 적합.

 

Cluster(NDB)

  • 트랜잭션 지원하고 모든 데이터와 인덱스가 메모리에 존재하여 매우 빠른 데이터 로드 속도 제공. PK사용시 빠름.

 

Archive

  • MySQL 5.0부터 새롭게 도입. 자동으로 데이터 압축 지원하고 저장공간 절약 효과 높다.
  • 가장 빠르지만 Insert와 Select만 가능하다.

 

Federated

  • MySQL 5.0부터 새롭게 도입. 물리 DB에 대한 논리 DB를 생성하여 원격 데이터를 컨트롤 가능. 
  • 속도는 네트워크에 좌우되며 테이블 정의를 통한 SSL 보안 처리 실시. 분산 DB 환경에 사용.