CSAPP Wiki

개념 노트

ACID와 InnoDB

트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 속성과 MySQL의 기본 스토리지 엔진인 InnoDB. 인덱스 구조(트리와 인덱스 (Tree & Index))와 함께 DB 내부 동작을 이해하는 축.

ACID 네 가지 속성

Atomicity(원자성)는 트랜잭션이 전부 반영되거나 전부 취소되는 성질이다. 계좌 이체에서 출금만 되고 입금이 안 되는 중간 상태를 남기지 않는다. Consistency(일관성)는 트랜잭션 전후로 제약 조건(외래 키, unique, 잔액 ≥ 0 같은 규칙)이 깨지지 않는 성질이다. Isolation(격리성)은 동시에 실행되는 트랜잭션들이 서로의 중간 상태를 보지 못하게 하는 성질이고, Durability(지속성)는 커밋된 결과가 장애(전원 차단 등) 후에도 살아남는 성질이다.

InnoDB가 ACID를 구현하는 방식

InnoDB는 MySQL의 기본 스토리지 엔진으로, 트랜잭션과 ACID를 지원한다는 점이 핵심 정체성이다(구형 엔진 MyISAM은 트랜잭션을 지원하지 않는다).

클러스터드 인덱스 — tree-index와의 연결

InnoDB 테이블 자체가 PK 기준 B+ tree다(clustered index). 리프 노드에 행 데이터 전체가 들어 있어, PK 조회는 트리 탐색 한 번으로 끝난다. 세컨더리 인덱스의 리프에는 행 위치가 아니라 PK 값이 들어 있어, 세컨더리 인덱스로 찾으면 그 PK로 클러스터드 인덱스를 한 번 더 타야 한다. 인덱스 구조가 곧 저장 구조인 셈이라 트리와 인덱스 (Tree & Index)의 B+ tree 이해가 그대로 InnoDB 이해로 이어진다.

자주 혼동하는 포인트

관련 문서