본문 바로가기
Database

Indexing

by oncerun 2021. 3. 1.
반응형

 

DBMS는 데이터와 데이터에 대한 제약조건을 효율적으로 안전하게 관리해야 하며, 사용자가 필요로 하는 데이터를 신속하게 찾아 제공할 수 있는 기능을 가지고 있어야 한다.

 

DBMS가 보편화되면서 필요한 데이터를 빠르게 검색하고 수정하기를 원하는 사용자들이 많아짐에 따라 모든 데이터를 일일이 조사하는 비효율적인 방법을 피해야 하기 때문에 대안으로 인덱싱과 해싱이라는 기법이 제안되었다.

 

Indexing 

 - 데이터 검색과정에서 발생하는 비효율적인 문제를 해결하기 위해 요청된 레코드에 빠르게 접근할 수 있도록 데이터와 관련된 부가적인 구조인 index를 관리한다. 이 index를 생성하고 디자인하는 작업이 Indexing이라고 한다.

 

만약 학생에 대한 테이블이 있다고 하자, 학생 테이블에는 학생 번호와 수강과목 칼럼 2개가 존재한다.

DBMS는 특정 학생의 레코드를 찾기위해 학생 번호를 사용한다고 가정한다.

DBMS는 인덱스를 통해 주어진 학생 번호에 해당하는 레코드가 디스크 저장장치 / 메인 메모리의 어느 블록에 저장되어 있는지 빠르게 파악하고 해당 블록을 읽어 들여 빠르게 학생 번호에 맞는 레코드에 접근할 수 있다.

이때 한 파일에서 레코드를 찾는 데 사용되는 칼럼이나 칼럼의 집합을 탐색키라고 한다.

 

인덱스는 말처럼 해당 레코드가 존재하는 어떤 저장소의 어느 블록에 있는지 알려줌으로써 시간이 단축되게 된다.

 

인덱스는 크게 두 가지로 나뉜다.

 

1. 순서 인덱스 : 탐색키값에 대해 정렬된 순서에 기초한다.

2. 해시 인덱스 : 버킷의 범위 안에서 값의 균일한 분포에 기초한다. 해시 함수로 어떤 값이 어느 버킷에 할당되는지 결정한다.

 

인덱스는 요구된 레코드의 접근 시간만으로 성능을 평가하지 않는다. 접근시간, 유지 비용, 공간 비용을 모두 고려하기 때문에 각 상황에 맞는 인덱스를 선택해야 한다.

 

 

반응형

'Database' 카테고리의 다른 글

ER 모델  (0) 2021.04.12
데이터베이스 관리자 DBA  (0) 2021.04.12
DataBase 정규화  (0) 2021.02.27
비식별관계와 식별관계  (0) 2021.01.28
데이터베이스 개념  (0) 2020.10.26

댓글