💡 개요
오늘은 어제 정리했던 MySQL의 엔진인 InnoDB에 대해 정리해 보자.
📕 InnoDB
InnoDB란 Innovative Database 의 약자로 MySQL의 기본 저장소 엔진이다.
주요 특징으론 모든 MySQL의 바이너리에 내장되어 있다. 그렇기 때문에 별도의 설치 없이 MySQL만 설치하면 자동으로 설치된다.
🛠️ InnoDB 구조
🛠️ InnoDB 특징
PK를 기준으로 클러스터링
InnoDB에서는 기본 키(PK) 값의 순서대로 데이터를 저장한다.
CREATE TABLE students (
id INT PRIMARY KEY, -- 기본 키 (PK)
name VARCHAR(50),
age INT
);
만약 데이터가 저장된다면 아래의 표처럼 저장될 것이다.
id (PK) | name | age |
1 | Alice | 20 |
2 | Bob | 22 |
3 | Charlie | 21 |
이처럼 InnoDB는 데이터를 id(기본 키) 순서대로 물리적으로 저장한다.
그렇기 때문에 PK를 기반으로 데이터를 검색하면 빠른 조회 성능을 가진다.
MVCC (Multi-Version Concurrency Control)
MVCC란 다중 버전 동시성 제어로 락을 걸지 않고도 동시에 여러 트랜잭션이 데이터를 읽고 쓸 수 있도록 해주는 기술이다.
MVCC를 사용하면 단순한 읽기 작업만 진행하고자 할 땐, 데이터의 정합성을 해칠 위험이 적기 때문에 락 획득을 대기하지 않고 바로 데이터를 조회할 수 있다.
하지만 그만큼 동시성 문제와 같은 데이터 정합성・일관성 문제도 발생할 수 있다.
그렇기 때문에 트랜잭션 격리 수준을 잘 적용해야 한다.
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.03.11 - compareTo() (0) | 2025.03.11 |
---|---|
[개발 일기] 2025.03.10 - 날짜 데이터 타입 (0) | 2025.03.10 |
[개발 일기] 2025.03.08 - MySQL과 웹 애플리케이션 (1) | 2025.03.08 |
[개발 일기] 2025.03.07 - Docker 볼륨 설정 (0) | 2025.03.07 |
[개발 일기] 2025.03.06 - JPQL vs QueryDsl (0) | 2025.03.06 |