[Other] Database Indexing

Byron·2021년 9월 12일
0

Indexing이란

  • 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조
  • 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 index는 책의 색인에 해당
  • 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다
  • 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다(왜냐하면 보통 인덱스는 키-필드만 갖고 있고, 테이블의 다른 세부 항목들은 갖고 있지 않기 때문)

인덱스 구조 예시

이미지 출처: https://maskkwon.tistory.com/218

인덱싱하고자 하는 컬럼을 Key로 하는 index table을 만들어 Value 값에 직접 접근하는 형식이다.
인덱스를 활용하면, 데이터를 조회하는 SELECT 외에도 UPDATE나 DELETE의 성능이 함께 향상된다. 그러한 이유는 해당 연산을 수행하려면 해당 대상을 조회해야만 작업을 할 수 있기 때문이다.

장점

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

단점

  • 인덱스를 관리하기 위해 DB의 약 10%에 해당하는 저장공간이 필요하다.
  • 인덱스를 관리하기 위해 추가 작업이 필요하다.
  • 인덱스를 잘못 사용할 경우 오히려 성능이 저하되는 역효과가 발생할 수 있다.

인덱싱을 사용하면 좋은 케이스

  • DB양이 많고, 검색이 변경보다 많은 경우
  • 인덱스를 사용하고자 하는 컬럼의 값이 다양한 경우

References

https://ko.wikipedia.org/wiki/%EC%9D%B8%EB%8D%B1%EC%8A%A4_(%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4)
https://maskkwon.tistory.com/218
https://mangkyu.tistory.com/96
https://velog.io/@bsjp400/Database-DB-%EC%9D%B8%EB%8D%B1%EC%8B%B1Indexing%EC%9D%B4%EB%9E%80

profile
step by step

0개의 댓글