인덱스의 목적은! 원하는 데이터에 신속하게 접근하기 위함.
주키와 후보키는 개체무결성제약조건(변경사항 관리)
외래키는 참조무결성제약조건(변경사항 관리)
즉, 값들에 대해 영향받음(데이터변경에 영향받음)
검색키는 다른키들과는 다르게 검색성능이 좋아야한다 -> 인덱스 생성
검색키는 값들에 영향을 받지 않고, 데이터 검색 성능에만 영향받음
하나의 테이블에 주키(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 희소 인덱스 차이
- 속도: 밀집 인덱스가 우수함
- 공간: 희소 인덱스가 우수함
- 삽입과 삭제에서도 부담이 적음
! 좋은 절충안: 블록당 하나의 인덱스 엔트리를 가지는 희소 인덱스를 구성
*** 중요 ! ***
클러스터링 인덱스 --> 희소 인덱스
비 클러스터링 인덱스 --> 밀집 인덱스
밀집 인덱스 -> 클러스터링, 비 클러스터링
희소 인덱스 -> 클러스터링만!
# 다단계 인덱스
하나의 인덱스 파일이 큰 경우 단계적으로 처리 // 다음 시간
# 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 |