인덱스(index)
- 사전적 의미: 색인.
- 데이터를 기록할 경우 그 데이터의 속성과 장소를 표로 표시하는 것
의의
- 추가적인 쓰기 작업과 저장공간을 활용해
데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조
👉 빠르게 데이터를 조회할 수 있도록 도움
사용
- INSERT : 데이터 인덱스 추가
- DELETE: 데이터 인덱스 삭제
- UPDATE: 기존 인덱스 사용 X, 바뀐 데이터 인덱스 추가
이런 곳들에 사용하면 좋음
- 규모가 작지 않은 테이블
- 위의 작업들이 자주 발생하지 않는 컬럼
- JOIN, WHERE or ORDER BY에 자주 사용되는 컬럼
- 데이터 중복도가 낮은 컬럼
장점
- 테이블 조회 속도, 성능 향상 ⬆️
- 시스템 부하 ⬇️
단점
- DB의 10% 해당하는 저장 공간 필요
- 관리를 위한 추가 작업 필요
- 잘못 사용시 성능 저하 등의 역효과 발생
인덱스의 자료구조
- 대표적으로 두가지
- 해시 테이블
- 데이터를 저장하는 자료구조 중 하나
- 빠른 데이터 검색에 유용
- 키값을 이용해 고유한 인덱스를 생성해,
그 인덱스에 저장된 값을 꺼내오는 구조
- 해시가 등호 연산에만 특화 돼 있기 때문에,
부등호 연산이 자주 사용되는 데이터베이스 검색을 위해서는 적합하지 않음 - B + Tree
- 자식 노드가 2개 이상인 B - Tree를 개선한 자료구조
- index 부분과 leaf 노드로 구성된 순차 데이터 부분으로 이뤄짐
(index 부분의 key값은 leaf에 있는 key값을 직접 찾아가는데 용이)
- leaf노드끼리 연결 리스트로 연결돼 있어 범위 탐색에 유리
- 각 노드에서 키값만 들어감
👉데이터는 모두 leaf노드에만 존재
'CS' 카테고리의 다른 글
ep 06-1.Hash (0) | 2022.12.18 |
---|---|
ep 05-2. Primary index vs Secondary index /Composite (0) | 2022.12.03 |
ep 04. Blocking/Non-blocking (0) | 2022.11.28 |
로드 밸런싱 (0) | 2022.11.20 |
TLS/SSL HandShake (0) | 2022.11.20 |