JUST WRITE

Index 본문

Database

Index

천재보단범재 2021. 11. 1. 17:22
이 글은 Guru99 사이트 'Indexing in DBMS'를 해석, 정리한 글입니다.

 

Index

Index

Indexing은 Database 파일에서 Record를 빠르게 접근하기 위한 Data Structure이다.

Index는 2개의 컬럼을 가진 작은 테이블 형태이다.

  1. PK(기본키) 나 Candidate Key(후보 키)로 구성
  2. Disk 블록의 주소를 가리키는 Pointer 조합

출처: https://mangkyu.tistory.com/96

Index 종류

출처: https://www.guru99.com/indexing-in-database.html

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를 가리킨다.

Dense Index

Sparse Index

Sparse Index는 일부 Record에 대해서 Index가 생성된다.

보통 Data 블록당 하나의 Index가 생성된다.

Index 저장공간을 절약되지만 Dense Index보단 검색 속도가 느리다.

Insert, Delete에 대한 유지보수도 수월하다.

Sparse Index

 

Secondary Index

Secondary Index는 Primary Index 정보가 아닌 일부 정보로 찾을 때 만들어서 사용한다.

다른 Index를 돕는 역할이다.

아래 예시와 같은 상황에서 필요하다.

계좌번호 Column이 PK인 은행계좌 Table에서 'ABC 은행'의 계좌를 모두 찾으려고 할 때 은행명 Column으로 Secondary Index 생성을 고려할 수 있다.

 

Seconday Index

Multi level Index

Data가 커져 Single Level Index로 안될 경우 Multi Level Index가 사용된다.

Index를 또 다른 작은 Index로 분할하여 사용한다.

Multi Level Index

B-Tree Index

DBMS에서 가장 많이 사용하고 있는 Index 구조이다.

Multi Level Index 포맷의 이진 탐색 Tree 구조이다.

모든 Leaf Node는 실제 Data Pointer를 가리킨다.

그리고 모든 Leaf Node는 Linke List로 연결되어 있어 순차 접근이 가능하다.

B-Tree Index

장점 / 단점

장점

  • Data를 검색하는 데 필요한 I/O 수 감소
  • Data를 빠르게 검색
  • 테이블 내 Row Data를 연결할 필요가 없어지므로 Tablespace 용량 절감

단점

  • Indexing를 잘 작동하기 위해 Table에 unique value가 필요
  • Index-organized 테이블 분할 불가능
  • Insert, Delete, Update 쿼리에서 성능 저하

[참고사이트]

728x90
반응형

'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
Comments