728x90

# 인덱스 갱신

- 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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기