728x90
인덱스란 효율적인 데이터 접근을 도와주는 자료구조
Index는 오름차순 정렬이기 때문에 우리가 원하는 정보를 찾기가 쉽다.
인덱스 파일
search key(DB에서 record를 찾기 위한 기준이 되는 값)와 실제 레코드를 참조하는 pointer로 구성된 index entry(index record)들의 집합
인덱스 파일은 일반적으로 원본 데이터 파일에 비해 매우 적은 용량을 차지한다.
인덱스
- search key를 정렬하여 관리하는 Order Indices
- 분산하여 관리하는 Hash Indices
인덱스 평가 지표
- Access Type : 인덱스를 사용할 때 효율적인 접근 방식. 쿼리의 종류에 따라 인덱스를 사용하는 것이 효과가 없을 수도 있다.
- specified value : 특정 값 조회.
- range of values : 값의 범위를 통해 조회
- 범위 쿼리는 B+트리 인덱스에서는 지원하지만 Hash 인덱스에서는 지원하지 않는다.
- Access time : 인덱스를 통해 데이터에 접근하는데 걸리는 시간
- Insert time, Delete time : 인덱스 자체를 관리하는데 소모되는 시간
- 레코드를 insert하거나 delete하면 인덱스 또한 insert, delete해야 한다.
- Space overhead : 인덱스를 저장하는 공간
집중 인덱스, 비 집중 인덱스
집중 인덱스
- 인덱스의 정렬순서가 레코드의 정렬 순서와 같은 인덱스로, 인덱스와 레코드의 순서가 같기 때문에 I/ O작업을 최소화 할 수 있다는 장점이 있다.
- 한 column을 기준으로 테이블을 정렬하면서 동시에 다른 column으로 정렬할 수 없기 때문에 테이블당 집중 인덱스는 최대 하나밖에 만들 수 없다.
- 집중 인덱스는 다른 말로 primary index라고 부른다.
- 집중 인덱스는 테이블의 PK를 사용하여 만든다.
비 집중 인덱스
- 집중 인덱스와 달리 인덱스의 정렬 순서가 테이블의 정렬순서와 다를 인덱스로, secondary index라고 부르기도 한다.
- 비 집중 인덱스는 인덱스의 정렬 순서가 테이블과 같을 필요가 없으므로 한 테이블에 여러개의 비 집중 인덱스가 있을 수 있다.
- PK가 아닌 다른 column을 사용하여 만든다
Dense Index Files
- 모든 search key값이 Index record에 있다.
- 오름차순으로 정렬된 인덱스를 생성할 때 각 키 값에 대해 인덱스 레코드가 생성되며, 이 인덱스 레코드에는 키 값과 해당 레코드의 위치가 포함된다.
ID 기준 - 교본 순서대로 정렬
학과명 기준 정
Sparse Index Files
sparse Index File구조에서 중요한 점은, 인덱스에 모든 search key가 포함되어있지 않기 때문에 반드시 집중 인덱스로 만들어야 인덱스 엔트리에 없는 레코드를 찾을 수 있다
검색성능은 떨어지지만 인덱스 엔트리수가 적어지기에 공간효율은 늘어나고 인덱스 관리 비용은 줄어들게 된다.
Multilevel index
인덱스를 통해 데이터베이스의 조회성능이 향상되기는 하지만, 인덱스 자체로도 메모리공간을 차지하기 때문에 인덱스를 많이 만든다고 항상 좋은 것은 아니다. 또한 테이블에 레코드가 너무 많은 경우 인덱스 파일이 메모리에 다 올라오지 못할 수 있다. 이에 대한 해결책으로 인덱스의 단계를 나누어 디스크에 보관하는 Multilevel index를 사용할 수 있다.
인덱싱
- 장점:
- 검색 성능이 좋아진다. 특히 대규모 데이터베이스에서 특정 필드를 기준으로 검색할 때 매우 유용하다
- 다양한 인덱스 구조를 사용하여 데이터베이스의 특정 요구에 맞출 수 있다
- 단점:
- 인덱스를 유지 관리하기 위한 추가적인 메모리와 디스크 공간이 필요하다
- 인덱스의 생성과 유지 관리에 추가적인 비용(삽입, 삭제 시의 성능 저하)이 발생한다.
- 인덱스를 잘못 설계하면 오히려 성능 저하가 발생할 수 있다.
728x90
'데이터베이스' 카테고리의 다른 글
B+, B - tree Index (2) | 2024.06.08 |
---|---|
SQL 기초 (0) | 2024.06.08 |