ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB
    면접준비 2025. 3. 21. 16:36
    index 란
    • 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조

     

    index 자료구조는?
    • 대표적으로 B-Tree
    • storage engine에 따라 인덱스 구조가 다르다
    • MySQL의 경우에 가장 많이 사용하는 storage engine인 InnoDB, MyISAM 같은 경우에는 B-Tree 로 되어있다
    • Memory/Heap, NDB 등은 Hash와 B-Tree로 되어있

     

    B-Tree 구조
    • B-Tree는 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 밸런스를 맞추는 트리
    • 정렬된 순서를 보장함
    • B-Tree 인덱스는 Root Block, Branch Block, Leaf Block으로 나누어진다
    검색 동작 방식
    1. Branch Block의 가장 왼쪽 값이 찾고자 하는 값보다 작거나 같으면 왼쪽 포인터로 이동
    2. 찾고자 하는 값이 Branch Block의 값 사이에 존재하면 가운데 포인터로 이동
    3. 오른쪽에 있는 값보다 크면 오른쪽 포인터로 이동
    index가 수정, 삭제가 많이 일어나는 테이블에 맞지 않는 이유
    • index는 또 다른 기존 테이블 외에 인덱스 테이블을 가지고 있기 때문에 검색 속도가 빨라짐
    • DML (insert, update, delete) 이 자주 일어나는 테이블의 경우에는 오히려 성능이 떨어질 수 있음
    • 인덱스는 데이터를 삭제하더라도 사용 안함 표시를 해주고 끝이지, 실제로 사라지는 것이 아님
    • 데이터를 수정하는 경우에도 내부적으로는 delete 후에 다시 insert 하는 로직을 따르고 있음
    • 따라서 DML이 자주 일어나는 테이블에서는 오히려 인덱스 테이블이 우너래 테이블보다 크기가 커지는 경우가 발생하게 됨!!
    index가 수정, 삭제 + B-Tree
    • B-Tree는 정렬된 순서를 보장한다는 특징이 있음
    • 따라서 빈번한 수정, 삭제가 일어나면 비효율적임

     

    '면접준비' 카테고리의 다른 글

    ✨좋은 사이트, 영상✨  (0) 2025.03.24
    Web  (1) 2025.03.24
    Spring Framework  (0) 2025.03.21
    Java  (0) 2025.03.21
Designed by Tistory.