zinna._.log
로그인
zinna._.log
로그인
[CS] 데이터베이스와 인덱스: 빠른 데이터 검색을 위한 인덱스
최지나
·
2024년 1월 14일
팔로우
2
CS
db
2
CS
목록 보기
46/55
데이터베이스에서 인덱스는 대용량 데이터에서 빠른 검색을 가능하게 하는 중요한 기능. 책의 목차와 유사한 역할 수행
인덱스의 효율성
인덱스가 효율적인 이유는 균형 잡힌 B-Tree 구조이기 때문. 탐색, 삽입, 삭제 작업을 평균
O(logN)
시간에 처리할 수 있어 매우 효율적.
대수확장성의 특징으로 인해 노드의 수가 증가해도, 트리의 수는 비교적 적게 증가하므로 대량의 데이터를 효율적으로 관리 가능
B-Tree
루트 노드, 리프 노드, 브랜치 노드(중간 노드)로 구성되어 있으며 자식 노드가 2개 이상
전체 데이터를 순차적으로 찾을 때보다 , B-Tree를 이용하면 훨씬 더 빠르게 찾을 수 있음
인덱스 최적화 기법
비용 고려
인덱스는 탐색 비용을 감소시키지만, 유지 관리 비용이 발생함에 유의
테스팅 중요성
인덱스 최적화는 서비스의 특성에 따라 달라짐 -> 정기적 테스팅 필요
복합 인덱스 전략 - 아래의 순서대로 인덱스를 잡아야 한다
같음 > 정렬 > 다중(<,>) > 카디널리티(고유성)
Clustered vs Non-Clustered Index
Clustered
클러스터형 인덱스는 테이블의 데이터와 물리적 순서가 일치
데이터의 삽입, 삭제, 수정 시 전체 정렬이 필요해 비효율적
primary key
Non-clustered
비 클러스터형 인덱스는 보조 인덱스
데이터의 물리적 순서와 인덱스가 독립적
삽입, 삭제, 수정은 빠르지만 탐색은 더 느림
인덱스 페이지 리프 노드에 실제 데이터가 있는 것이 아니라 데이터 페이지에 관한 포인터가 존재
REF
최지나
의견 나누는 것을 좋아합니다 ლ(・ヮ・ლ)
팔로우
이전 포스트
[CS] 관계형 DB vs NoSQL / 스토리지 엔진
다음 포스트
[JPA] JPA 어노테이션 정리 ✍️
0개의 댓글
댓글 작성