다단계 인덱스
IT위키
더 많은 작업
다단계 인덱스(Multilevel Index)는 인덱스 파일이 너무 커서 한 번에 다루기 어려울 때, 그 인덱스 자체를 하나의 정렬된 파일로 보고 그 위에 다시 인덱스를 쌓아 올린 여러 단계의 인덱스 구조이다.
Elmasri·Navathe 는 단계를 아래에서부터 센다.[2]
- 1단계(first level, 기저 단계) - 데이터 파일을 직접 가리키는 원래 인덱스이다.
- 2단계 - 1단계 인덱스의 블록마다 엔트리를 하나씩 둔 인덱스이다.
- 맨 위 단계(top level) - 엔트리가 한 블록에 다 들어가는 단계이다. 이 단계를 마스터 인덱스라고 부르며, 보통 주기억장치에 올려 둔다.
따라서 3단계로 이루어진 다단계 인덱스에서 데이터 파일을 가리키는 것은 1단계, 마스터 인덱스는 3단계이다. "마스터 인덱스가 1단계이고 데이터 파일을 가리키는 인덱스가 3단계"라는 설명은 번호를 거꾸로 붙인 것이다. 검색은 번호와 반대로 마스터 인덱스에서 시작해 1단계로 내려온 뒤 데이터 블록에 닿는다.
한 블록에 들어가는 인덱스 엔트리 수를 팬아웃(fo)이라 하면, 단계가 하나 올라갈 때마다 엔트리 수가 1/fo 로 준다. 1단계 엔트리가 r1 개이면 필요한 단계 수 t 는 log_fo(r1) 을 올림한 값이다. 레코드 하나를 찾는 데 드는 블록 접근은 단계마다 한 번씩 t 번, 여기에 데이터 블록 한 번이 더해진다.[2] 예를 들어 1단계 엔트리가 30,000개이고 팬아웃이 68이면 2단계는 442개, 3단계는 7개로 한 블록에 들어가므로 t = 3 이고, 레코드 하나를 찾는 데 블록 4번을 읽는다.
| 구분 | 단일 단계 인덱스 | 다단계 인덱스 |
|---|---|---|
| 구조 | 인덱스 파일 하나 | 인덱스 위에 인덱스를 쌓은 트리 |
| 검색 비용 | 인덱스 블록 수 b 에 대해 log₂b 번 | 단계 수 t 번(팬아웃이 밑) |
| 위 단계의 성격 | 해당 없음 | 모두 희소 인덱스 |
| 갱신 | 한 파일만 고친다 | 여러 단계를 고친다(B+ 트리로 완화) |
- ↑ 1.0 1.1 Silberschatz, Korth, Sudarshan, 「Database System Concepts 7th Edition - Chapter 14: Indexing」 강의 슬라이드, https://www.db-book.com/slides-dir/PDF-dir/ch14.pdf, 확인일: 2026-11-04.
- ↑ 2.0 2.1 Elmasri, Navathe, 「Fundamentals of Database Systems - Chapter 14: Indexing Structures for Files」 강의 슬라이드(Purdue University CS448), https://cs.purdue.edu/homes/bb/cs448_Fall2016/lecture-files/pdf/ch14-Indexing%20Structures%20for%20Files.pdf, 확인일: 2026-11-04.