- 특정 부분을 찾을 수 있는 목차나 색인의 개념
- 활용전략 수립을 위해 내부적 구조, 특징 , 장단점 이해
인덱스 유형
*B - tree 인덱스
가장 기본적인 인덱스의 형태 balanced tree 구조로 생성
1) 구조
balanced tree 인덱스는 Root block , branch block , leaf block 으로구성
leaf block 에 실 저장 위치를 가리키는 rowid 가 존재
branch block 은 여러 레벨을 가질 수 있음
2) 범위 스캔
index = 컬럼 + rowid 로 정렬 -> pga buffer 로 이동
3) rowid 의 구조 -> 6+3+6+3 display =18 저장 =10
data object : database segment 식별정보
relative file : tablespace 에 상대적 datafile 번호
block number : row 를 포함하는 data block 번호
row number : block 에서의 row slot
인덱스 블록의 전략
- 최대한 인덱스 컬럼의 수를 줄인다
- 큰 블록사이를 지정한다
- PCTREE 를 가능한 최소로 정의한다
- 키압축 을 활용 (특히, 유일 인덱스, 결합 인덱스)
- SQL Server의 RID
8바이트 = page address(4) + file ID(2) + slot number(2)
4) 생성
데이터 정렬한 후 인덱스 세크먼트의 리프 블록에 기록
리프블록이 PCTREE 에 도달하면 새로운 리프블록과 브랜치 블록생성
리프 블록이 추가될 때마다 브랜치 블록에 로우를 추가하며 작업 계속
브랜치 블록이 PCTREE 에 도달하면 새로운 브랜치 블록과 루트 블록 생성
5) 분활
결합 인덱스의 구성 : 발생일자 + 항목 <-> 항목 + 발생일자
인덱스의 재생성 필요
중간 값의 삽입으로 인해 PCTREE 가 초과되면 기존 블록과 새로 생성되는 블록 모두가 제 한
맨 앞이나 맨 뒤에 삽입되는 경우에는 기존의 구조에 영향을 미치지 않음
(연결고리만 수정)
6) 삭제 및 갱신
삭제
삭제 플래그만 표시하므로 저장공간 낭비, 범위 스캔 대상증가
리프 블록의 모든 로우가 삭제되더라도 범위 스캔 시에는 엑세스 될수 있음
갱신
로우의 삭제와 삽입이 동시에 진행됨
저장공간의 낭비와 트리 구조의 깊이가 증가
해결방안은 인덱스의 재생성
데이터 처리 (DML) 가 많이 수행되는 테이블은 정기적인 재생성 필요
7) 인덱스를 경유한 검색
lmc = left most child block
dba = data block address
terminated or rowid
*B-tree 클러스터 인덱스
*비트맵 인덱스
최소단위인 BIT 를 이용한 인덱스 형태
저장공간이 크게 감소
비트를 연산하여 머지
B-TREE 인덱스의 많은 단점 해결
대용량 데이터 처리에 강점
*리버스키 인덱스
데이터 엑세스 분산 효과
리버스키 인덱스의 제약사항
리버스키 인덱스의 활용 방안
*함수기반 인덱스
가공한 논리적인 컬럼에 대해서 인덱스를 생성
댓글 없음:
댓글 쓰기