티스토리 뷰
인덱스 목적: 찾고자 하는 레코드의 검색 속도 향상
- Digital Index: 모체 데이터(전체 데이터베이스)를 기반으로 search key(탐색 키) 값을 찾기 쉽도록 배열한 data entry들의 집합
- Data entry: 인덱스 파일에 저장된 레코드(탐색키 필드 + 주소 필드)
- 탐색 키 값에 따라 정렬
- 범용적인 인덱스 구조: balanced 트리
- 모체 데이터가 추가/삭제/수정되면 각 인덱스에 반영되어야 함
복합 인덱스: 두개 이상의 속성으로 인덱스가 만들어지는 것
ex) 전공, 학년으로 인덱싱: 전공으로 1차 정렬, 학년으로 2차 정렬
Index의 data entry에 저장할 방식
① k *: search key 값이 k인 실제 data record
② <k, rid>: rid는 k 값에 해당하는 data record의 id,<k, address>
③ <k, rid-list>: rid-list는 k에 해당하는 data record들의 id list, <k, address list>
②③은 일반적인 경우, ①은 특수한 경우
인덱싱을 했을 때 적절한 속성
값들이 다양하고, 검색 조건(SQL where문)에 많이 포함되어야 함
값이 다양한 경우: 키, 속성, 이름 등
값이 다양하지 않은 경우: 성별, 학년 등
(파일 스캔으로 데이터를 검색하는 시간보다 처리 시간이 적어야 함)
인덱스의 평가 기준
1) 접근시간: 원하는 데이터를 찾는데 걸리는 시간
2) 유지비용: 데이터 삽입/삭제 연산으로 인한 인덱스 갱신비용
3) 공간비용: 인덱스 구축에 의해 필요한 부가적인 공간비용
인덱스 파일의 크기는 데이터 파일의 크기 보다 훨씬 작다.
블록단위로 인덱스 파일을 읽어 올 때, 하나의 블록에 많은 인덱스의 내용을 포함하므로
몇 번의 입출력으로 원하는 데이터를 빠르게 검색할 수 있음
(= 대용량의 데이터 파일을 검색하는 것 보다 인덱스를 이용하여 검색하는 것이 훨씬 빠름)
'cs > DB' 카테고리의 다른 글
[데이터베이스/Database] B+ 트리(Balance Tree) (0) | 2021.04.16 |
---|---|
[데이터베이스/Database] 군집/비군집 인덱스, 밀집/희소 인덱스 (0) | 2021.04.16 |
[데이터베이스/Database] 힙 파일, 정렬 파일, 해시 기반 파일 (0) | 2021.04.02 |
[데이터베이스/Database] 정규형(1NF, 2NF, 3NF, BCNF) (0) | 2021.03.27 |
[데이터베이스/Database] 함수 종속성과 폐포(암스트롱 공리) (0) | 2021.03.18 |