-
Index는 모두 균형트리 (Balanced Tree) 구조로 구성된다고 했었다.
Index가 어떻게 동작하는지 이해하기 위해 균형 트리의 개념을 살짝 짚고 넘어가보자.
균형트리에서 데이터는 Node라는 공간에 저장된다. MySQL에서는 Page라고도 한다.
- Root Node
- 가장 최상위의 Node를 말하며 모든 Node는 여기서 부터 시작 된다.
- Internal Node
- Root, Leaf 사이에 있는 Node들을 말한다.
- Leaf Node
- 제일 마지막에 존재하는 Node를 말한다.
페이지는 최소한 16Kbyte크기를 가진다.
균형트리는 데이터 검색(SELECT)시 뛰어난 성능을 발휘 한다.
만약 일반 리프페이지만 존재 할시 데이터를 검색할때 10개의 페이지가 있다면 특정 데이터를 찾기위해서 처음부터 페이지를 순차적으로 다 검색해야 한다, 이러한 방식을 Full Table Scan이라 한다.
하지만, 균형트리에서 검색하게 된다면 무조건 루트페이지에서 부터 검색하게 되며 데이터가 정렬이 되어 있다는 가정하에, 그 다음은 특정 페이지에서 검색하게 된다.
인덱스를 구성하면 CUD 시 성능이 나빠지게 된다. 특히 INSERT 할 당시 성능이 더 느리게 입력될 수 있다.
원인은 페이지 분할이라는 작업을 하기 때문인데, 이는 새로운 페이지를 준비하고 데이터를 나누는 작업으로 자주 발생하면 성능에 큰 영향을 주게 된다.
인덱스 구조
클러스터형으로 인덱스를 구성한다면 데이터 페이지도 인덱스에 포함하게 된다 (사전형 인덱스)이기 때문에,
보조형으로 인덱스를 구성한다면 데이터 페이지를 건드리지 않고 별도의 공간에 인덱스 페이지를 생성한다, 이 인덱스 페이지에는 페이지 번호와 위치가 담겨 있다.
'개발' 카테고리의 다른 글
Effective Java Study - 1 (1) 2022.09.08 JPA 연관 관계 매핑 (0) 2022.08.02 Index (1) (0) 2022.06.29 Docker - 1 (0) 2021.06.14 5xx Server Error (0) 2021.05.05 - Root Node