# 인덱스 갱신
- Insert, Delete : 데이터 파일, 인덱스에도 insert, delete 처리
- Update : 데이터 파일에 Update 처리, 인덱스에는 delete 후 insert로 모델링하여 처리
- 결국 인덱스 갱신은 insert, delete 만 고려
# 밀집. 주인덱스 삽입
- 검색키 값을 이용하여 삽입할 위치를 찾음
1. 검색키 값이 인덱스에 없을 경우
- 적당한 위치에 검색키 값을 가지는 인덱스 엔트리를 삽입
2. 검색키 값이 인덱스에 있을 경우
a. 만약 인덱스 엔트리가 동일한 검색키 값을 가지는 모든 데이터 레코드들에 대한 포인터를 저장하고 있다면
- 인덱스 엔트리에 새로운 데이터 레코드에 대한 포인터를 추가
b. 만약 인덱스 엔트리가 동일한 검색키 값을 가지는 모든 데이터 레코드들 중 첫 번째 레 코드에 대한 포인터만 가 지고 있다면
- 동일한 검색키 값을 가지는 다른 레코드들 뒤에 위치, 인덱스에는 별도의 수정이 불필요
# 삽입. 희소 주인덱스
- 인덱스는 각 블록에 대한 엔트리를 저장하는 것으로 가정
1. 삽입에 따라 새로운 블록을 생성하였다면
- 새로운 블록에서의 (검색키 순으로) 첫 번째 검색키 값과 블록 포인터를 인덱스에 새로운 엔트리로 삽입
2. 새로운 레코드가 블록 안에서 가장 작은 검색키 값인 경우
- 그 블록을 가리키는 인덱스 엔트리의 검색키 값을 수정
3. 새로운 레코드가 블록 안에서 가장 작은 값이 아닌 경우
- 인덱스 수정 없음
# 삭제. 밀집 주인덱스
1. 삭제된 데이터 레코드가 해당 검색키 값을 가지는 유일한 레코드라면
- 대응하는 인덱스 엔트리를 삭제
2. 삭제된 데이터 레코드의 검색키 값이 유일한 레코드가 아니면
a. 해당 검색키의 인덱스 엔트리가 동일한 검색키 값을 가지는 모든 레코드들에 대한 포인 터를 저장하고 있다면
- 삭제된 데이터 레코드에 해당하였던 포인터를 삭제
b. 해당 검색키의 인덱스 엔트리가 동일한 검색키 값을 가지는 모든 레코드들 중 첫 번째 레코드에 대한 포인터만
저장하고 있다면
b1. 삭제된 레코드가 해당 첫 번째 레코드였다면
- 인덱스 엔트리의 포인터는 그다음 데이터 레코드를 가리키도록 수정
b2. 그렇지 않다면 인덱스 수정 없음
# 삭제. 희소 주인덱스
1. 삭제된 데이터 레코드의 검색키 값을 가지는 인덱스 엔트리가 인덱스에 없을 경우
- 인덱스 수정 없음
2. 삭제된 데이터 레코드의 검색키 값을 가지는 인덱스 엔트리가 인덱스에 있을 경우
a. 삭제된 레코드가 그 검색키를 가지는 유일한 것이었다면
- 다음 데이터 레코드의 검색키 값과 포인터로 인덱스 엔트리를 교체
a1. 만약 해당 다음 데이터 레코드의 검색키 값이 이미 인덱스에 있었다면
- 삭제된 레코드의 검색키 값에 해당하는 인덱스 엔트리를 삭제
b. 삭제된 레코드가 그 검색키를 가지는 유일한 것이 아니었다면
- 현재의 인덱스 엔트리의 포인터가 동일한 검색키 값을 가지는 다음 데이터 레코드를 가리키도록 갱신
'전공 공부 > 데이터베이스시스템' 카테고리의 다른 글
B+ 트리 갱신 (0) | 2021.01.06 |
---|---|
B+ 트리 인덱스(다단계 인덱스) (0) | 2021.01.06 |
순서 인덱스 (0) | 2021.01.05 |
인덱스 (0) | 2021.01.05 |
관계형 데이터 베이스의 설계 (0) | 2021.01.05 |