99클럽 코테 스터디 3일차 TIL DB Index 작동 원리
728x90
  • DB
    • Index
      • Index 란?
      • Index 작동 원리
      • Index 종류
        • B-Tree 인덱스
        • Hash Indexes
        • Bitmap Index
        • GIST(Generalized Search Tree)
        • R-Tree
        • Full Text Index
        • Spatial Index
        • Trie(Prefix Tree) Index
        • Covering Index
    • 영속성
    • 트랜잭션
    • ORM
    • ACID
    • N+1 문제
    • DB 정규화
    • Data Replication
    • sharding 전략
    • CAP 이론

Index 작동 원리

Index란 ➡️ Index 개념..

Index 작동 원리

  1. 삽입 작업
    새로운 데이터가 테이블에 삽입될 때, 인덱스된 열의 값에 따라 인덱스 트리에도 해당 데이터의 위치 정보가 삽입됨.
  2. 검색 작업
    사용자가 특정 값을 요청하면, DB 는 인덱스를 사용하여 데이터의 위치를 빠르게 찾아낼 수 있음. 이는 전체 데이터를 순차적으로 검색하는 것보다 훨씬 빠름.
  3. 삭제 작업
    데이터가 삭제되면 해당 데이터의 인덱스도 업데이트되어야 함.

tistory 블로그 글에 있음 Index 동작원리

  • 데이터 파일 블록이 10만개가 있다고 가정할 때 select 문 실행 시
    1. server process 가 구문 분석 과정을 마친 후 database buffer cache 조건에 부합하는 데이터가 있는지 확인
    2. 해당 정보가 buffer cache 에 없다면 디스크 파일에서 조건에 부합하는 블럭을 찾아 database buffer cache에 가져온 뒤 사용자에게 보여줌
    3. 이 때 index 가 없으면 10만개 전부 database buffer cache 로 복사한 뒤 풀스캔으로 찾음.
    4. index 가 있으면 where 절의 조건의 컬럼이 index의 키로 생성되어 있는지 확인한 뒤, 인덱스에 먼저 가서 조건에 부합하는 정보가 어떤 row id 를 가지고 있는지 확인 후 row id 에 있는 블럭을 찾아가 해당 블럭만 buffer cache 에 복사함.

Index 사용이 불가능한 경우에는...

  • 인덱스 컬럼을 조건절에서 가공하면 인덱스 사용이 불가능함.
  • 부정형 비교는 인덱스 사용 불가능
  • is null 조건만으로 인덱스 사용불가.

Index 사용 시 고려 사항

  • 인덱스는 검색 성능을 향상 시키지만, 데이터 삽입, 삭제, 갱신 작업 시에는 성능 저하가 발생할 수 있음 (Insert, Delete, Update) -> 인덱스 구조 자체를 수정해야 하기 때문
  • 인덱스는 저장 공간을 추가로 사용하기 때문에 필요한 경우에만 생성하는 것이 좋음.
728x90