-
[MySQL] 데이터베이스 엔진 InnoDB, MyISAMDatabase/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
'Database > MY-SQL' 카테고리의 다른 글
[MySQL] Ubuntu(우분투), MySQL 8.0↑ Replication 설정 (0) 2023.01.17 [MySQL] 데이터베이스, 테이블 Dump 하기 (0) 2023.01.17 [MySQL] Replication(리플리케이션)이란 (0) 2023.01.17 [MySQL] 우분투에서 MySQL8 설치 후 포트 개방 및 사용자 생성 (0) 2023.01.17