DATABASE, MySQL 스토리지 엔진

MySQL DB엔진

스토리지엔진

  • 스토리지엔진은 DB에서 데이터를 어떤 방식으로 저장하고, 접근할 것인지에 대한 기능을 제공한다
  • 스토리지엔진의 특성에 따라 데이터 접근이 얼마나 빠른지, 얼마나 안정적인지, 트랜잭션 등의 기능을 제공하는지 등의 차이점이 발생한다.
  • 1대의 서버에 두가지 스토리 엔진을 혼용하는것은 좋지 않다.
    • 각기 다른 동작, 메모리 사용법을 취하므로
    • 혼용하면 효율적인 cpu, 메모리 사용이 어렵다

효과적인 스토리 엔진 선택

스토리 엔진 엑세스 패턴
MyISAM 추가 처리만 한다, select count(*) 를 많이 사용
InnoDB 갱신 빈도가 높다, 트랜잭션이 필요하다, 민감한 정보를 사용한다

1. MyISAM

  • MySQL 5.5 이전까지 기본 스토리지 엔진
  • Table-level Lock
    • 테이블 작업시 특정 행을 수정하려고 하면 테이블 전체에 락이 걸린다
  • 트랜잭션 미지원
    • 작업도중 문제가 발생해도, 이미 db안으로 데이터가 입력됨
  • select작업이 많은 경우 효과적
    • 잦은 변경 및 삭제에는 성능이 좋지 못함.

2. InnoDB

  • MySQL 5.5 부터 기본 스토리지 엔진
  • 트랜잭션 지원 (ACID Transaction)
  • MyISAM 보다 data 저장 비율이 낮고, 데이터 로드 속도 느리다.
  • Row-level Lock
    • 테이블작업시, 작업 시작하면 해당 row만 잠긴다.
    • insert, update, delete에 대한 속도가 빠르다
  • 민감한 정보를 갖는 table(회원 table, 돈 관련 table)에 사용하기 좋다
    • 비정상 종료시 복구 기능
  • 주로 데이터 입력 및 수정이 빈번한 높은 퍼포먼스를 요구하는 대용량 사이트에 적합

3. Cluster(NDB)

  • 트랜잭션 지원
  • 모든 데이터와 인덱스가 메모리에 존재하여 매우 빠른 데이터 로드 속도
  • PK사용시 최상의 속도를 나타낸다

4. Archive

  • MySQL5.0 부터 새롭게 도입된 엔진
  • 자동으로 데이터 압축지원
  • 다른 엔진에 비해 80% 저장 공간 절약 효과
  • 가장 빠른 데이터 로드 속도
  • insert, select만 가능

5. Federated

  • MySQL5.0 부터 새롭게 도입된 엔진
  • 물리적 db에 대한 논리적 db를 생성하여 원격 데이터 컨트롤 가능
  • 실행속도는 N/W요소에 따라 좌우된다
  • 테이블 정의를 통한 SSL보안 처리
  • 분산 DB환경에서 사용

참고

Tags:

Categories:

Updated: