일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Trino
- PostgreSQL
- Vision
- docker
- Operating System
- jvm
- CVAT
- helm
- Python
- Packet
- AWS
- MAC address
- log
- zookeeper
- java
- tcp
- kubernetes
- kubectl
- JavaScript
- kubeadm
- airflow
- grafana
- Kafka
- CSV
- ip
- aws s3
- OS
- EC2
- Network
- Spring
- Today
- Total
JUST WRITE
Index 본문
이 글은 Guru99 사이트 'Indexing in DBMS'를 해석, 정리한 글입니다.
Index
Indexing은 Database 파일에서 Record를 빠르게 접근하기 위한 Data Structure이다.
Index는 2개의 컬럼을 가진 작은 테이블 형태이다.
- PK(기본키) 나 Candidate Key(후보 키)로 구성
- Disk 블록의 주소를 가리키는 Pointer 조합
Index 종류
Index는 크게 Primary Indexing, Secondary Indexing으로 나누어진다.
Primary Index
Primary Index는 2개의 field로 고정된 길이를 가졌고 정렬되어 있다.
첫 번째 field는 Primary key, 두 번째 field는 Data 블록을 가리키는 Pointer이다.
Primary Index와 Data와의 관계는 1:1 관계이다.
Primary Index는 Dense Index, Sparse Index 2가지로 나누어진다.
Dense Index
Dense Index는 모든 Record에 대해서 Index가 생성된다.
검색 속도는 빨라지지만 Index를 저장한 공간이 필요해진다.
Index에서 Pointer는 실제 Record를 가리킨다.
Sparse Index
Sparse Index는 일부 Record에 대해서 Index가 생성된다.
보통 Data 블록당 하나의 Index가 생성된다.
Index 저장공간을 절약되지만 Dense Index보단 검색 속도가 느리다.
Insert, Delete에 대한 유지보수도 수월하다.
Secondary Index
Secondary Index는 Primary Index 정보가 아닌 일부 정보로 찾을 때 만들어서 사용한다.
다른 Index를 돕는 역할이다.
아래 예시와 같은 상황에서 필요하다.
계좌번호 Column이 PK인 은행계좌 Table에서 'ABC 은행'의 계좌를 모두 찾으려고 할 때 은행명 Column으로 Secondary Index 생성을 고려할 수 있다.
Multi level Index
Data가 커져 Single Level Index로 안될 경우 Multi Level Index가 사용된다.
Index를 또 다른 작은 Index로 분할하여 사용한다.
B-Tree Index
DBMS에서 가장 많이 사용하고 있는 Index 구조이다.
Multi Level Index 포맷의 이진 탐색 Tree 구조이다.
모든 Leaf Node는 실제 Data Pointer를 가리킨다.
그리고 모든 Leaf Node는 Linke List로 연결되어 있어 순차 접근이 가능하다.
장점 / 단점
장점
- Data를 검색하는 데 필요한 I/O 수 감소
- Data를 빠르게 검색
- 테이블 내 Row Data를 연결할 필요가 없어지므로 Tablespace 용량 절감
단점
- Indexing를 잘 작동하기 위해 Table에 unique value가 필요
- Index-organized 테이블 분할 불가능
- Insert, Delete, Update 쿼리에서 성능 저하
[참고사이트]
'Database' 카테고리의 다른 글
Stored Procedure (0) | 2022.01.02 |
---|---|
Transaction (0) | 2021.11.23 |
Normalization vs Denormalization (0) | 2021.11.16 |
DBMS vs RDBMS (0) | 2021.11.02 |
HA vs RAC (0) | 2021.08.28 |