InnoDB는 "은행 금고 시스템"이다. 데이터를 빠르게 꺼내고(버퍼 풀), 실수해도 되돌리고(언두 로그), 장애가 나도 복구하고(리두 로그), 동시에 여러 사람이 써도 충돌 없이(MVCC) 동작하도록 설계된 MySQL의 핵심 스토리지 엔진.

<aside> 🐰
InnoDB는 결국 디스크 기반인데도 메모리처럼 빠르게 보이게 만들려고 버퍼 풀 + 로그 구조로 최적화한 엔진 인 것 같아요.
</aside>
| 용어 | 한 줄 풀이 | 비유 |
|---|---|---|
| InnoDB | MySQL 기본 스토리지 엔진 | 은행의 금고 운영 시스템 |
| 클러스터드 인덱스 | PK 기준으로 데이터를 물리적으로 정렬 저장 | 도서관에서 책을 번호순으로 꽂아두는 것 |
| 세컨더리 인덱스 | PK를 논리 주소로 사용하는 보조 인덱스 | 책 제목으로 찾는 색인 → 번호 확인 → 책장 이동 |
| MVCC | 여러 버전의 데이터를 유지해 잠금 없이 읽기 제공 | 구글 문서의 버전 히스토리 |
| 언두 로그 | 변경 전 데이터를 백업해두는 로그 | 수정 전 문서를 임시 저장해두는 것 |
| 리두 로그 | 변경 후 내용을 먼저 기록하는 로그 (WAL) | 공사 일지 — 뭘 했는지 먼저 적어두기 |
| 버퍼 풀 | 디스크 데이터를 메모리에 캐시하는 공간 | 책상 위에 꺼내놓은 자주 쓰는 서류들 |
| 더티 페이지 | 메모리에서 수정됐지만 아직 디스크에 안 쓴 페이지 | 메모는 했지만 아직 서랍에 정리 안 한 서류 |
| 플러시 | 더티 페이지를 디스크에 동기화하는 작업 | 메모한 내용을 서랍에 정리하는 것 |
| 체인지 버퍼 | 인덱스 변경 작업을 임시 저장했다가 나중에 병합 | 택배 물류센터에 모아뒀다가 한꺼번에 배송 |
| 어댑티브 해시 인덱스 | InnoDB가 자주 쓰는 데이터에 자동 생성하는 해시 인덱스 | 자주 찾는 연락처를 즐겨찾기에 등록 |
| Double Write Buffer | 더티 페이지 손상 방지를 위한 이중 기록 버퍼 | 중요 서류를 원본 + 사본으로 보관 |
| LRU 리스트 | 최근에 사용된 페이지를 관리하는 자료구조 | 최근 사용한 앱 목록 |
| Free 리스트 | 비어있는 버퍼 풀 페이지 목록 | 비어있는 책상 서랍 목록 |
| 격리 수준 (Isolation Level) | 트랜잭션 간 데이터 접근을 얼마나 격리할지 설정 | 독서실 칸막이 높이 |