데이터베이스의 인덱스는 b+ tree 구조를 활용한다
이때 b는 balance 즉 정렬된 상태를 유지하는데
여기서는 근간이 되는 b tree의 동작을 대상으로
인덱스 삭제, 추가 등의 작업 후 어떤 동작이 일어나는지
어떤 동작이 오버헤드가 가장 클지 생각해보자
추가
1. 추가를 위해 키 값을 저장할 노드를 탐색한다
2. 키, 값을 저장
추가의 경우 테이블에 레코드를 추가하는 작업의 부하를 1이라고 했을때 인덱스 추가는 1.5라고 볼 수 있다.
디스크로부터 인덱스 페이지를 읽고 쓰는 작업을 해야하기 때문에 큰 작업이다.
인덱스의 잦은 변경을 왜 주의해야하는지 알 수 있다.
삭제
삭제의 경우 비교적 간단하다.
키를 탐색 후 더 이상 사용하지 않는다는 마킹 작업을 한다.
변경
변경은 삭제 + 추가의 작업이다.
- 먼저 사용하지 않는 키를 마킹하고
- 새롭게 키,값을 추가한다.
즉 가장 오버헤드가 큰 작업으로 생각된다.
추가
삭제
변경