[DB] 인덱스 (INDEX)

2021. 6. 24. 22:40·DATABASE
728x90

인덱스 (INDEX)

  • 추가적인 쓰기작업, 저장공간을 활용하여 테이블에 대한 동작 속도를 높여주는 자료구조

인덱스 장단점

  • 테이블 조회속도와 성능을 향상시킬 수 있음 (검색에 최적화)
  • 전반적인 시스템 부하를 줄임
  • 인덱스 관리를 위한 추가 작업 필요, 인덱스를 관리하기 위해선 DB의 약 10% 해당하는 저장공간 필요
  • 인덱스는 기본적으로 이진트리 검색을 사용하기 때문에 기본적으로 정렬이 되어있어서, 인덱스를 잘못 사용할 경우 오히려 성능 저하될 수 있음 (INSERT, DELETE, UPDATE가 자주 발생하는 테이블에 인덱스를 걸 경우 오히려 성능 저하)

인덱스 알고리즘

  • Hash Table과 B+ Tree이 있지만 일반적으로 B+ Tree를 사용

B+ Tree 정의

https://www.geeksforgeeks.org/difference-between-b-tree-and-b-tree/ 참고

  • B-Tree 를 개선시킨 자료구조
  • 키에 의해서 각각 식별되는 레코드의 효율적인 삽입, 검색과 삭제를 통해 정렬된 데이터를 표한하기 위한 자료구조

B+ Tree 특징

  • 리프노드, 논리노드, 루트 노드로 구성되어 있음
  • 리프노드는 인덱스와 함께 실제 데이터가 저장되는 노드를 가짐
  • 논리노드는 리프노드까지의 경로 역할, 루트노드는 출발점노드이며 인덱스 Key만 가짐
  • 리프노드는 서로 LinkedList로 연결되어 있음

인덱스 종류

  • 클러스터 인덱스 : 테이블당 1개만 허용, 해당 컬럼기준으로 물리적으로 정렬 (물리적으로 정렬되서 리프노드가 필요 X, 추가적인 공간 X), PRIMARY KEY 설정시 자동으로 생성
  • 논클러스터 인덱스 : 테이블 249개까지 생성 가능, 테이블의 페이지를 정렬하지 않고 새로운 공간을 할당, 많은 공간을 차지하게 됨, 종류로 단일인덱스와 복합인덱스가 논클러스터 인덱스에 포함됨
  • 단일 인덱스 : 인덱스에 컬럼이 하나 걸린 경우
  • 복합 인덱스 : 인덱스에 컬럼이 두개 이상이 걸린 경우
저작자표시

'DATABASE' 카테고리의 다른 글

[DB] REPLICATION(리플리케이션)  (0) 2021.11.13
[DB] 쿼리 처리 과정  (0) 2021.06.26
[DB] 샤딩  (0) 2021.06.02
[DB] 트랜잭션  (0) 2021.05.16
[MySQL] 쿼리 튜닝 기초  (0) 2020.12.15
'DATABASE' 카테고리의 다른 글
  • [DB] REPLICATION(리플리케이션)
  • [DB] 쿼리 처리 과정
  • [DB] 샤딩
  • [DB] 트랜잭션
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    SQL
    코틀린
    이펙티브 코틀린
    이펙티브코틀린
    cleancode
    프로그래머스
    docker
    Elk
    엘라스틱서치
    go
    ElasticSearch
    클린코드
    AWS
    자바
    IntelliJ
    Spring
    splunk
    JPA
    java
    Kafka
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[DB] 인덱스 (INDEX)
상단으로

티스토리툴바