ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터베이스] index는 무엇인가
    데이터베이스 2024. 8. 9. 14:37

    인덱스란?

     

    추가적인 쓰기 작업과 저장 공간을 활용하여 데이터 베이스 테이블의 검색 속도(조회)를 향상시키기 위한 자료구조이다

    즉, 저장 공간에 번호를 매기는 것 과 같다고 이해 하면 된다

     

    사용자가 특정 데이터를 찾기 위해 query 문을 입력하게 된다고 하면 
    테이블의 모든 데이터를 검색해야 한다 -> 시간이 오래 걸림

     

    하지만 index란 자료구조를 사용하게 된다고 하면 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회 할 수 있다

     

    위 그림과 같이 user가 조회를 한다고 하면 index에서 해당 데이터의 위치를 찾고 table에서 가져온다 

    기존에는 table에서 Full Scan을 수행해야한다 하지만 index 로 인해 시간을 단축 시킬수 있다

     

    조회(SELECT) 뿐만이 아닌 UPDATE, DELETE 의 성능도 함께 향상 된다 

    이유는 UPDATE, DELETE를 수행 하려고 하면 해당 데이터를 조회해야 하기 때문이다

     

     

    하지만 index를 사용한다고 해서 UPDATE, DELETE가 무조건 좋은 건 아닌 것 같다

     

    왜냐하면 DBMS는 index를 항상 최신의 정렬된 상태로 유지 해야한다 -> 원하는 값을 빠르게 탐색 할 수 있게 하기 위해

     

    그래서 INSERT, UPDATE, DELETE가 수행이 된다면 추가적으로 연산을 해줘야 한다 -> 오버헤드 발생

     

    • INSERT : 새로운 데이터에 대한 인덱스 추가
    • DELETE : 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행
    • UPDATE : UPDATE 전의 인덱스를 사용하지 않는다는 작업을 처리, UPDATE 된 데이터에 대한 인덱스를 추가

     

     

    장점

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

     

    단점

    • 인덱스를 관리하기 위해 10%의 저장공간이 필요
    • 인덱스를 관리하기 위한 추가 작업 필요
    • 인덱스를 잘 못 사용할 경우 성능이 오히려 저하되는 역효과

     

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

    • 규모가 작지 않은 테이블
    • INSERT, UPDATE, DELETE 가 자주 발생하지 않는 컬럼
    • JOIN이나 WHERE, ORDER BY에 자주 사용되는 컬럼
    • 데이터의 중복도가 낮은 컬럼

     

    인덱스를 사용을 좀더 생각 해봐야 하는 경우

    • CREATE, DELETE, UPDATE 같은 연산이 빈번한 테이블인 경우
    • 규모가 작은 테이블

     

     

    인덱스의 자료구조

     

    인덱스를 구현하기에 가장 대표적인 자료구조는 해시 테이블과 B-Tree가 있다

     

     

     

     

     

Designed by Tistory.