본문 바로가기
Database/MySQL

Mysql 스토리지엔진, InnoDB 와 MyISAM

by devstep 2022. 6. 1.

InnoDB 가 무엇이고, 다른 DB 엔진과 차이 알아보기

InnoDB란 무엇인가

  • Storage Engine : 데이터베이스에서 데이터를 접근하는 방식
  • frm 파일에 접근하는 속성을 설정
  • 스토리지 엔진은 DB에서 데이터를 어떤 방식으로 저장하고 접근할 것인지에 대한 기능을 제공합니다.
  • 스토리지 엔진에 따라 데이터 접근 속도, 안정적인지, 트랜잭션 기능을 제공하는지 등의 차이가 발생합니다.

InnoDB란 무엇

  • 스토리지 엔진의 한 종류

스토리지 엔진

  • 스토리지 엔진은 데이터 읽기/쓰기 작업을 처리한다. 데이터를 디스크로 저장하고 읽어오는 역할 담당.

  • 데이터를 디스크로 저장하고 읽어오는 역할을 담당하는 스토리지 엔진은, 데이터를 물리적 디스크에 저장하는 방식을 클러스터드 인덱스 방식과 넌 클러스터드 인덱스 방식으로 제공하고 있다.

  • MySQL서버에서 지원되는 스토리지 엔진 확인

    show engines;
  • MySQL스토리지 엔진 종류

    InnoDB
    MEMORY
    MRG_MYISAM
    CSV
    PERFORMANCE_SCHEMA
    MyISAM
    BLACKHOLE
    ARCHIVE
    FEDERATED

InnoDB와 다른 DB 엔진과 차이

  1. 데이터 저장 방식의 차이
    InnoDB는 기본적으로 PK를 기준으로 클러스링 되어 있는 클러스터드 인덱스 방식을 사용하여 데이터를 디스크에 저장합니다. 즉 PK값에 의해 레코드의 저장위치가 결정됩니다.
  2. 외래키 지원
    MyISAM에서는 사용할 수 없는 기능.
    부모/자식 테이블에 데이터가 있는지 체크하는 작업이 필요하므로 잠금이 여러 테이블로 전파되는 특성이 있습니다.
  3. MVVC
    락을 걸지 않고 읽기 작업을 수행 (serializable 격리 레벨은 제외)
    레코드 기반 잠금 기능 지원
  4. 자동화된 장애 복구
  5. 오라클 아키텍처 사용
    tablespace개념, undo 데이터를 시스템 tablespace에서 관리 등
  6. InnoDB 버퍼 풀
    디스크의 데이터파일, 인덱스 정보를 메모리에 캐시해 두는 공간
    쓰기 작업 지연시켜 일괄 작업을 처리하는 버퍼 역할 수행 : 랜덤 디스크 작업이 수행될 수 있는 insert, update, delete를 버퍼풀에 모아서 일괄 처리

MyISAM

  1. 키 캐시
    키 캐시는 지원하나 데이터 캐시는 스토리지엔진에서 제공하지 않는다.
    운영체제의 읽기작업으로 항상 요청해야 한다.
    버퍼 풀이 없으므로 운영체제의 쓰기 작업으로 항상 요청해야 한다.
  2. 데이터 저장방식
    넌 클러스터드 인덱스 방식, 데이터의 저장을 인덱스에 의존하지 않는다.

넌클러스터드 인덱스

  • 인덱스 순서와 데이터 순서가 연관이 없다.
  • 인덱스에서 데이터에 접근할 수 있는 정보를 갖는다.
  • MyISAM 의 모든 인덱스, InnoDB의 PK제외 인덱스의 경우 : 넌클러스터드 인덱스로 구성됨

클러스터드 인덱스

  • 클러스더드 인덱스 방식으로 데이터를 저장한다는 것은 PK 값의 순서대로 디스크에 저장된다는 것입니다.
    그래서 PK값의 범위 검색이 빠른 장점이 있습니다.

참고문서

댓글