본문 바로가기
카테고리 없음

230318 TIL

by hbIncoding 2023. 3. 18.

1.  Index  

  • 추가적인 작업들을 통해서 테이블에서 데이터의 조회 속도를 향상시켜줄 수 있는 자료구조
  • ex)member_id가 각각의 포인터를 가지고 있다면 테이블 전체를 살피지말고 포인터만 살펴봐도 성능을 향상시킬 수 있다.

 1)인덱스 사용 시 주의 사항

  • 무조건 인덱스를 사용하는 것은 옳지 못한 생각이다.
  1. 조회 과정을 수행하지 않는 : Insert 
    • 조회 과정을 수행하지 않는 Insert의 경우 새로운 데이터가 삽입될 때 마다 Index를 최신화하도록 추가를 해줘야 한다. 추가적인 연산이 필요하므로 성능 저하를 일으킬 수 있다.
  2. 조회 과정 수행하는 : Select, Delete, Update
    • Select, Delete, Update는 조회를 시작으로 한다. 조회에 대한 성능은 향상 된다.
    • Select : 조회만 함으로 추가 연산이 없다.
    • Delete : 삭제하는 데이터의 Index를 사용하지 않도록 하는 작업 후 추가적으로 진행
    • Update : 기존 Index를 사용하지 않도록 하는 작업 후 갱신된 Index를 추가
    • 즉 Select는 추가 연산이 없어 성능 향상을 도모할 수 있지만, Delete와 Update의 경우 추가 연산으로 인해서 성능이 저하될 수 있다. Delete, Insert, Update가 많이 수행된다면 Index가 오히려 데이터 보다 크기가 커질 수 있다.
  3. Index를 사용하면 좋은 경우
    • 크기가 충분히 큰 테이블
    • Insert, Delete, Update가 자주 발생하지 않는 컬럼
    • Join, where Order by를 자주 사용하는 컬럼
    • 한 컬럼이 가지고 있는 데이터의 중복성이 낮은 컬럼

 

 2)Indext 자료 구조

  • Hash Table
    • (key, value)로 데이터를 저장하고, key값으로 고유한 Index를 생성하여 값을 O(1) 속도로 가져오는 자료구조
    • 이진트리와 유사하지만 자식 노드가 2개 이상일 수 있다. 하지만 Insert, Delete, Update 연산을 통해 점차 균영이 깨지고 성능이 악화되어, 재구성하는 작업이 필요할 수 있다.

  • B+Tree
    • B-Tree와 다르게 브랜치 노드에 key만 두고, data는 담지 않는다. 오직 리프 노드에만 key와 data를 저장한다. 리프 노드들은 Linked List로 연결
    • 장점은 하나의 노드에 더 많은 Key 값을 담을 수 있기 때문에 트리의 높이가 낮아진다.(더 빠르게 탐색 가능)

2.  ElasticSearch

  • 일반적인 검색 엔진은 웹에서 정보를 수집하여 검색 결과를 제공한다. DB의 비정형 데이터를 색인하고 검색하는 것은 불가능 하다.
  • 엘라스틱 서치는 비정형 데이터를 색인하고 검색하는 것이 가능하다.
  • 또한 장점중의 하나인 역색인 구조를 사용함으로써 빠른 검색이 가능하다.
    • 역색인 : 키워드를 통해 문서를 찾는 방식

 

3.  참조

1) Index 이론과 스프링에 적용하기 : https://dingdingmin-back-end-developer.tistory.com/entry/Spring-Data-JPA-6-Index-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

 

Spring-Data-JPA [6] Index 적용하기

Database의 성능을 높이기 위한 여러 가지 방법들이 있습니다.(Index, 반정 규화, 클러스터링 등등) 이번에는 Index에 대해서 알아보겠습니다. 1. Index란? Index란 추가적인 작업들을 통해서 테이블에서

dingdingmin-back-end-developer.tistory.com