▼ DataBase, NoSQL/MySQL

MySQL | 데이터베이스 엔진 InnoDB, MyISAM

Valar 2023. 1. 28. 15:09
반응형
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에 적합하다.

 

Reference

반응형