Skip to content

Latest commit

 

History

History
61 lines (47 loc) · 2.13 KB

조윤호.md

File metadata and controls

61 lines (47 loc) · 2.13 KB

index

  • 데이터를 정렬하여 탐색 속도를 빠르게 한다!

알고리즘

1. B-tree (Balanced tree)

  • 트리의 높이가 같다.
  • 자식 노드를 2개 이상 가질 수 있다.
  • 각 노드 - 1 페이지(8kB)의 데이터 용량 차지

image

  • 루트 페이지 : 자식 페이지의 범위 정보와, 자식 페이지 주소
  • 브랜치 페이지 : 자식 페이지의 범위 정보와, 자식 페이지 주소
  • 리프 페이지 : 실제 데이터 페이지 or 실제 데이터의 주소 페이지

장점

  • 조회 성능 향상

단점

  • 불필요한 처리량 증가
  • 페이지 낭비, 인덱스 조각화

insert

  1. 해당 영역의 페이지에 빈 공간이 있는 경우, 빈 공간에 데이터를 저장한다.
  2. 해당 영역의 페이지가 꽉 찬 경우 -> 페이지 분할
    1. 빈 페이지 생성
    2. 기존 페이지와 새 페이지의 데이터를 나누어 저장

delete

  • 실제 컬럼 삭제 x, 대신 비활성화한다.

update

  • delete 후 insert

B+ tree

  • 리프 페이지에만 주요 데이터 담기는 자료구조
  • 같은 높이의 sibling 노드 간 "링크드 리스트" 구조로 연결됨 -> 범위 탐색에 용이 image

clustering, non-clustering

  • clustering index : 실제 데이터를 정렬
  • non-clustering index : 실제 데이터와 별도로 정렬

clustering index 선정 우선순위

  1. primary key가 있는 경우
  2. unique + not null인 컬럼이 있는 경우

non-clustering index 선정 조건

  1. unique 컬럼인 경우 자동 생성됨
  2. 수동으로 생성하기
    • CREATE UNIQUE INDEX index_name ON member (name)
    • CREATE INDEX index_name ON member (name)

인덱스 선정 기준

  1. Cardinality : 중복도 낮은 데이터
  • good : 전화번호, id 등
  • bad : 성별, 학년 등
  1. WHERE JOIN ORDER BY 자주 발생
  2. INSERT UPDATE DELETE 적은
  3. 규모가 큰