MySQL Storage Engine

2020. 11. 25. 14:56DB

Storage Engine이란

Storage Engine의 개념

Storage Engine은 DBMS가 데이터베이스에 대해 데이터를 삽입, 추출, 업데이트 및 삭제하는데 사용하는 기본 소프트웨어 컴포넌트입니다. MySQL의 스토리지 엔진은 데이터베이스 엔진을 조작할 때, 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지부터 데이터를 읽어오는 부분을 DBMS 고유의 사용자 인턴페이스를 이용하는 방법과 포트 번호를 통해 하는 방법을 제공합니다.

MySQL Storage Engine의 종류

MyISAM

특징

  • 데이터 저장에 실직적인 제한이 없음
  • 데이터를 매우 효율적으로 저장
  • 빈번한 데이터 사용의 부하를 잘 소화함
  • B-tree, R-tree 그리고 Full-text Index를 지원
  • 특정 Index에 대한 메모리 캐시를 지원
  • 데이터 압축에 대한 옵션을 제공
  • 테이블 레벨의 Lock을 지원
  • 트랜젝션을 미지원

장점

  • 데이터 모델 디자인이 단순
  • 전체적으로 속도가 InnoDB 보다 빠름
  • Select 작업 시 속도가 빠르므로 읽기 작업에 적합
  • Full Text 인덱싱이 가능하여 검색하고자 하는 내용에 대한 복합 검색이 가능

단점

  • 테이블 레벨의 Lock을 사용하기 때문에 쓰기 및 수정 작업 속도가 느림
  • 데이터 무결성에 대한 보장이 되지 않음

적합한 사용처

  • 트래픽이 많은 웹사이트
  • 데이터 웨어하우스
  • 정적인 테이블, 로그 테이블
  • 쓰기 작업이 별로 없는 select 위주의 Table
  • Current Insert 기능이 Read시에 Insert가 가능하게 하므로 로그 테이블에 사용

InnoDB

특징

  • ACID 트랜젝션을 지원
  • Table space당 64TB 데이터의 저장을 지원
  • MyISAM보다 데이터 저장 비율이 낮음
  • 다른 Engine들에 비해 느린 Data 로드 속도
  • MVCC/Snapsho read를 지원
  • B-Tree와 Clustered Index를 지원
  • 특정 데이터와 Index에 대한 메모리 캐시를 지원
  • Foreign Key 지원
  • 데이터 압축 옵션을 제공하지 않음
  • Row 레벨의 Lock을 지원하며 여러가지 Isolation 레벨을 지원
  • 자동 에러 복구 기능
  • Backup 및 특정 시점으로의 복구 지원

장점

  • 데이터 무결성이 보장
  • 제약조건, 외래 키의 생성이 가능하며, 동시성 제어 등 다양한 기능을 지원
  • Row 레벨의 Lock을 사용하기 때문에 변경작업에 대한 속도가 빠름

단점

  • 많은 기능을 제공하다보니 데이터 모델 디자인에는 많은 시간이 필요
  • 시스템 자원을 많이 사용

적합한 사용처

  • Online 트랜젝션을 지원하는 시스템
  • 민감한 정보를 갖는 테이블
  • 갱신 위주의 트랜잭션이 요구되는 테이블
  • Index가 많이 걸린 대량의 Table

Cluster

특징

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

Archive

특징

  • 자동적으로 데이터 압축을 지원
  • 가장 빠른 데이터 로드 속도
  • Insert와 select만 가능
  • Row 레벨의 Lock이 가능

Federated

특징

  • 물리적 데이터베이스에 대한 논리적 데이터베이스를 생성하여 원격 데이터를 컨트롤 할 수 있음
  • 네트워크 요소에 따라 실행속도가 좌우됨
  • 테이블 정의를 통한 SSL 보안 처리가 가능
728x90

'DB' 카테고리의 다른 글

Dinstinct와 Group by의 차이  (0) 2021.05.03
SQL 작성 7거지악  (0) 2021.04.01
DB Cluster  (0) 2020.11.20
MySQL Stored Procedure의 장단점  (0) 2020.09.17
SQL IN과 OR의 비교  (0) 2020.09.11