본문 바로가기
CS

ep 05-1. index

by L_SU 2022. 12. 2.

인덱스(index)

- 사전적 의미: 색인.

- 데이터를 기록할 경우 그 데이터의 속성과 장소를 표로 표시하는 것

의의

- 추가적인 쓰기 작업과 저장공간을 활용해

   데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조

👉 빠르게 데이터를 조회할 수 있도록 도움

사용

- INSERT : 데이터 인덱스 추가

- DELETE: 데이터 인덱스 삭제

- UPDATE: 기존 인덱스 사용 X, 바뀐 데이터 인덱스 추가

이런 곳들에 사용하면 좋음

  • 규모가 작지 않은 테이블
  • 위의 작업들이 자주 발생하지 않는 컬럼
  • JOIN, WHERE or ORDER BY에 자주 사용되는 컬럼
  • 데이터 중복도가 낮은 컬럼

장점

  • 테이블 조회 속도, 성능 향상 ⬆️
  • 시스템 부하  ⬇️

단점

  • DB의 10% 해당하는 저장 공간 필요
  • 관리를 위한 추가 작업 필요
  • 잘못 사용시 성능 저하 등의 역효과 발생

인덱스의 자료구조

- 대표적으로 두가지

  1. 해시 테이블
    - 데이터를 저장하는 자료구조 중 하나
    - 빠른 데이터 검색에 유용
    - 키값을 이용해 고유한 인덱스를 생성해,
      그 인덱스에 저장된 값을 꺼내오는 구조
    - 해시가 등호 연산에만 특화 돼 있기 때문에,
      부등호 연산이 자주 사용되는 데이터베이스 검색을 위해서는 적합하지 않음
  2. 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