ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] 데이터베이스 엔진 InnoDB, MyISAM
    Database/MY-SQL 2023. 1. 15. 18:39

     

    MySQL을 사용해왔지만 데이터의 입출력을 위해 기본 작업만 진행했었지 내부적인 구조에 대해서는 생각해 본적이 없어서 이번에 대표적인 스토리지 엔진인 InnoDb와 MyISAM에 대해 알아보려고 한다. 물론 그 외에 다른 스토리지 엔진들(Memory, Archive, CSV, Federated 등)도 있다.

     

    스토리지 엔진

    - 서버 엔진이 필요한 데이터를 물리적 장치에서 가지고 오는 역할을 수행한다.

    - 성능 향상을 위해 키 캐시(MyISAM), 버퍼 풀(InnoDB) 등의 기능을 내장한다.
    - 스토리지 엔진은 여러 개를 동시에 사용할 수 있다. 즉, 테이블 마다 다른 스토리지 엔진 사용이 가능하다.

    - 특정 테이블이 어떤 스토리지 엔진을 사용하는지 확인하려면 SHOW TABLE STATUS 명령을 이용한다.

    SHOW TABLE STATUS from 테이블명;

     

    MyIsam

    MySQL 5.5 이전까지 기본 스토리지 엔진이다.

    - 전문 검색, 공간 좌표 검색 기능을 제공한다.

    - 읽기 작업이 많은 환경에 적합하다.

    - Table lock 사용하여 트랜잭션이나 Row 수준의 잠금을 지원하지 않아 갱신 작업이 느리다.

    - 테이블을 데이터 파일과 인텍스 파일 두 곳에 주로 저장하는데 이 두 파일의 확장자는 각각 .MYD와 .MYI다.

    *갱신 작업이 별로 없는 SELECT 작업이 많은 정적인 Table에 적합하다.

     

    InnoDB

    MySQL 5.5 이후부터 기본 스토리지 엔진이다.

    - 커밋, 롤백 및 충돌 복구 기능을 가진다.

    - 트랜잭션 제공 및 트랜잭션 ACID을 보장한다.

    - 외부키(foreign key)를 지원한다.

    - 메모리에 인덱스와 데이터가 모두 적재되기 때문에 메모리 버퍼 크기가 DB 성능에 많은 영향을 준다. 따라서 MyIsam보다 더 많은 자원을 요구한다.

    *데이터 무결성이 필요한 갱신 위주의 트랜잭션이 요구되는 Table에 적합하다.

     

    ❗️정리

    MySQL 8.0 버전 이후에는 MyISAM는 활용도가 점점 낮아지고 있다고 한다. 하지만 이전에 기본 엔진이었던 만큼 여전히 사용하는 곳도 있을거라고 생각하고 알아두어야겠다고 생각했다.

     

    Reference

    댓글

Designed by Tistory.