전공 과목 이수2👨‍💻/데이터베이스관리

인덱스

천숭이 2021. 10. 13. 01:17

인덱스의 목적은! 원하는 데이터에 신속하게 접근하기 위함.

 

주키와 후보키는 개체무결성제약조건(변경사항 관리)

외래키는 참조무결성제약조건(변경사항 관리)

즉, 값들에 대해 영향받음(데이터변경에 영향받음)

 

검색키는 다른키들과는 다르게 검색성능이 좋아야한다 -> 인덱스 생성

검색키는 값들에 영향을 받지 않고, 데이터 검색 성능에만 영향받음

 

하나의 테이블에 주키(primary key)는 하나여야함.

하지만 , 검색키들은 하나의 테이블에 여러개 존재할 수 있음.


# 검색키   Search Key

- 파일에서 원하는 레코드를 찾기 위한 칼럼들의 집합

- 하나의 테이블에 하나 이상의 검색키들이 존재할 수 있음

   = 여러개의 인덱스들이 존재가능

 

 

# 인덱스 파일의 구성 엔트리

검색키 ("김갑동") 포인터 (해당 위치의 레코드)

 

테이블로 된 데이터 = 구조화된 데이터 structured data -> 엄격하게 구조화되어 있다.

이 데이터를 다루는 언어가 SQL .

 

## 인덱스 종류   -  순서인덱스와 해시인덱스는 높은 검색성능

# 순서 인덱스   Ordered

- 검색키 값에 대해 정렬(순서화)

- B+ 트리 순서

    ex) create index id_x on student(ID) 라고 작성하면 순서인덱스의 B+트리가 디폴트로

 

정렬을하면 찾으려고하는 데이터의 위치가 짐작이 된다. 시행착오가 줄어든다 = 효율이 좋다

 

데이터베이스의 아키텍처는 ANSI SPARC (독립된 구조)

 

# 해시 인덱스

- 검색키

- 해시파일을 관리하는 인덱스 엔트리 , 찾으려는 인덱스를 해시함수 인자로 넣는다.

- 해시 인덱스는 시행착오가 없다. (탐색시간이 짧다)

- 하지만 빈공간 낭비가 있다. 순서가 존재하는 곳 사이를 새로운 데이터가 끼어들 수 없기 때문.

- 해시 인덱스파일의 공간을 넉넉하게 설정해야 한다.

해시인덱스 작동원리

# 비트맵 인덱스

- 전문적인 용도(OLAP)가 아닌, DBMS의 차원에서 분석하기 위한 용도

- 분산도가 낮다.


# 인덱스 적용 시 고려 요소

삽입 시간, 삭제 시간

- 삽입, 삭제 시 시간이 많이 소요될 수 있으므로, 삽입삭제가 많이 일어나는 인덱스는 인덱스적용하기가 부담스러울수도 있다. 이때는 인덱스 무시하고 삽입삭제하는 편이 낫다.


인덱스 종류(순서, 해시, 비트맵) 자세하게 살펴보기 !

 

# 순서 인덱스

 

- 클러스터링 인덱스

  》 한가지 열(컬럼)을 기준으로 레코드들 순차 접근이 가능 

  》 한 개의 테이블이 존재 = 주 인덱스 Primary Index

  》 레코드마다 순서를 지킬 수 있는 포인터가 존재.

  》데이터파일에 데이터레코드에 순차접근이 가능하게 하는 열(칼럼)이 존재한다.  그 열을 따로 만들어 놓은것이 클러스터링 인덱스        이자 주 인덱스

- 비클러스터링 인덱스

 여러개의 테이블 가능 -> 2차 인덱스

 》파일의 순서화에 관여하지 않은 검색키에 해당하는 인덱스. 따라서 여러개가 가능

이름을 기준으로 비클러스터링,, 다른 열을 기준으로도 가능

 

- 밀집 인덱스

 

- 밀집 클러스터링 인덱스

 

- 밀집 비클러스터링 인덱스

밀집 클러스트링 인덱스 VS 밀집 비 클러스터링 인덱스

- 희소 인덱스

 》 검색키 값의 일부만 등장

 》 반드시 클러스트링 인덱스여야함 (주인덱스여야함)

희소인덱스

# 밀집 인덱스 VS 희소 인덱스 차이

- 속도: 밀집 인덱스가 우수함
- 공간: 희소 인덱스가 우수함
- 삽입과 삭제에서도 부담이 적음
! 좋은 절충안: 블록당 하나의 인덱스 엔트리를 가지는 희소 인덱스를 구성

 

*** 중요 ! ***

클러스터링 인덱스 --> 희소 인덱스

비 클러스터링 인덱스 --> 밀집 인덱스

밀집 인덱스 -> 클러스터링, 비 클러스터링

희소 인덱스 -> 클러스터링만!

밀집, 희소 절충

 

# 다단계 인덱스

하나의 인덱스 파일이 큰 경우 단계적으로 처리     // 다음 시간

 

# 2차인덱스

모든 검색 키값과 모든 레코드에 대한 포인터를 가지는 인덱스 엔트리로 된 밀집인덱스여야한다. 2차 인덱스의 포인터는 파일의 레코드들을 직접적으로 가리키지 않고 포인터를 포함하고 있는 버켓을 가리킨다.

'전공 과목 이수2👨‍💻 > 데이터베이스관리' 카테고리의 다른 글

스케줄  (0) 2021.12.08
Transaction 트랜잭션  (0) 2021.12.06
인덱스 정리  (0) 2021.11.05
파일 내 레코드 구조, 데이터 사전 저장장치  (0) 2021.10.05
파일 구조  (0) 2021.10.04
RAID  (0) 2021.10.04