InnoDB 리프 페이지

리프 노드가 곧 실제 행 데이터입니다

클러스터드 인덱스에서는 내부 노드가 PK로 내려갈 경로를 고르고, 리프 노드가 정렬된 전체 행을 그대로 저장합니다.

탐색

내부 노드는 “어느 페이지로 내려갈지”만 결정합니다.

[30]
[10, 20]
[30, 40, 50]

예를 들어 `PK=20`을 찾으면 왼쪽 가지로, `PK=40`이면 오른쪽 가지로 내려가며 목표 리프 페이지에 도달합니다.

저장

리프 노드에는 인덱스 키만이 아니라 전체 행이 PK 순서대로 들어 있습니다.

데이터 페이지 A
[10, "Alice", "IT", 5000]
데이터 페이지 B
[20, "Bob", "HR", 4000]
다음 페이지
[30, "Choi", "Sales", 4500]

별도 테이블 힙이 없기 때문에 리프 페이지 자체가 테이블 본문 역할을 합니다.

결과

PK 범위 검색은 첫 리프를 찾은 뒤 옆 페이지를 연속해서 읽으면 됩니다.

1. 시작 위치 찾기 `WHERE id BETWEEN 10 AND 30`이면 `10`이 있는 리프 페이지로 먼저 이동
2. 연속 페이지 읽기 리프 노드가 PK 순으로 연결되어 있어 `20`, `30`이 있는 페이지를 이어서 스캔
3. 추가 재탐색 없음 이미 전체 행이 리프에 있으므로 다른 저장 구조를 다시 찾지 않아도 됨
핵심: InnoDB의 클러스터드 인덱스는 리프 노드 = 데이터 페이지 구조라서, PK 기준 정렬과 범위 검색의 연속 읽기 이점이 바로 생깁니다.