DB Index
2022.07.26 공부 내용
파일 혹은 테이블에서 탐색 속도를 증가시키기 위해 사용하는 보조 자료 구조.
특정 field (혹은 column)의 값들을 이용해서 만듦. Field 값이 key이고, 해당 record에 대한 포인터가 value인 key-value 형식.
인덱스를 key-value의 리스트 형태로 저장하는 방식. 어떤 field를 선택하냐에 따라 다음과 다른 방식들 존재.
Index로 설정한 field의 값이 정렬되어 있고, 값이 모두 다른 경우 사용.
Index로 설정한 field의 값이 정렬되어 있지만, 중복된 값이 존재하는 경우 사용.
Index로 설정한 field의 값이 정렬되어 있지 않은 경우 사용.
데이터베이스에서 인덱스로 사용될 column을 선정하는 방법.
인덱스를 key의 tree형태로 구현하기 위해 사용되는 자료구조. 트리의 각 노드에 여러 개의 key를 저장.
차수 M인 B-tree는 다음과 같은 조건을 따르는 tree.
Binary search tree와 같이 루트 노드부터 트리를 아래로 탐색하며 해당하는 값을 찾음.
새로운 key 삽입은 leaf 노드에서 이루어짐. 해당 노드의 key 수가 M을 넘어간다면, 분할하는 과정이 이루어짐.
B-tree 내의 key 삭제는 여러 가지 경우로 나뉨. 삭제해도 해당 노드의 key 수가 M/2 이상인 경우는 제외함.
삭제할 key를 자식 노드의 key와 교체 가능한 경우
삭제할 key를 자식 노드의 key와 교체 불가능한 경우. 부모 노드와 형제 노드를 병합, 자식 노드들을 병합 후 경우에 따라 분할을 수행한다.
기존 B tree를 변형해서 데이터를 leaf 노드에만 저장하는 tree. 모든 리프 노드는 linked list 형태로 연결되어 있어 부등호 연산이 굉장히 빠름.
Leaf node를 제외한 B+ tree는 B tree와 동일한 구조. Leaf node의 부모 키는 leaf node의 첫번째 key 값보다 작거나 같음
Index란 DB에서 조회 속도를 늘리기 위해 사용하는 추가적인 자료 구조. 그러나 삽입 / 삭제 등에 분명히 더 cost가 드므로 어떤 column을 index로 설정할 지가 중요.
List 형태의 index도 있지만 B tree 기반 index를 주로 사용. B+ tree는 부등호 연산에 더욱 최적화.