본문 바로가기
STUDY/CS

인덱스

by 수쨔앙 2023. 1. 19.

인덱스란?

데이터베이스 분야에서 테이블에 대한 동작의 속도를 높여주는 자료구조 입니다.

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

데이터베이스의 index는 책의 색인과 같다 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에

위 그림처럼 데이터와 데이터의 위치를 포함한 자료구조를 생성해서 빠르게 조회할 수 있도록 도와주는 것이다.

(데이터 = 책의 내용, 인덱스 = 책의 목차, 물리적 주소 = 책의 페이지번호)

 

 

인덱스 동작원리

인덱스 선수 컬럼이 조건절에 사용되지 않으면 범위 스캔을 위한 시작점을 찾을 수 없어서 옵티마이저는
인덱스 전체를 스캔하거나 테이블 전체를 스캔하는 방식을 취한다.

 

 

인덱스 장점

Where문으로 특정 조건의 데이터를 찾기 위해서는 테이블의 전체를 조건과 비교하는 작업(Full Table Scan)이 필요했는데

인덱스를 이용하면 데이터들이 정렬되어 있기 때문에 조건에 맞는 데이터를 빠르게 찾을 수 있다

-> 인덱스는 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있고, 전반적인 시스템의 부하를 줄일 수 있다.

 

 

인덱스 단점

1. 인덱스를 관리하기 위한 추가 작업이 필요

2. 추가 저장 공간 필요

3. 잘못 사용하는 경우 오히려 검색 성능 저하

 

인덱스를 항상 정렬된 상태로 유지해야 하기 때문에 인덱스가 적용된 컬럼에 삽입(INSERT), 삭제(DELETE), 수정(UPDATE) 작업을 수행하면 다음과 같은 추가 작업이 필요하다. 

-> 인덱스를 관리하기 위한 추가 작업이 필요하고 인덱스의 수정도 추가적으로 필요하기 때문에 데이터의 수정이 잦은 경우 성능이 낮아진다.

- INSERT : 새로운 데이터에 대한 인덱스를 추가

- DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업 수행

- UPDATE : 기존의 인덱스를 사용하지 않음 처리, 갱신된 데이터에 대한 인덱스 추가

 

데이터의 인덱스를 제거하는 것이 아니라 '사용하지 않음'으로 처리하고 남겨두기 때문에 수정 작업이 많은 경우 실제 데이터에 비해 인덱스가 과도하게 커지는 문제점이 발생할 수 있다.

-> 별도의 메모리 공간에 저장되기 때문에 추가 저장 공간이 많이 필요하게 된다. 

 

 

인덱스를 사용하면 좋은 경우

  • 규모가 큰 테이블
  • 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 작업이 자주 발생하지 않는 컬럼
  • WHERE나 ORDER BY, JOIN 등이 자주 사용되는 컬럼
  • 데이터의 중복도가 낮은 컬럼

 

 

 

출처

https://rebro.kr/167

https://mangkyu.tistory.com/96

http://wiki.gurubee.net/pages/viewpage.action?pageId=29065492

 

728x90

'STUDY > CS' 카테고리의 다른 글

이터레이터(iterator), 제너레이터(generator)  (1) 2023.02.23
TCP와 UDP  (0) 2023.02.04
HTTP 프로토콜  (0) 2023.01.16
웹 서버와 WAS의 차이  (0) 2023.01.16
시스템 호출(시스템 콜, system call, syscall)  (0) 2023.01.13

댓글