[MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기

2022. 4. 9. 14:38·📟 Database/혼자 공부하는 SQL

클러스터형 인덱스와 보조 인덱스는 모두 내부적으로 균형 트리로 만들어진다. 균형 트리(Balanced Tree)는 '자료 구조'에 나오는 범용적으로 사용되는 데이터의 구조로써 데이터를 검색하는 데 효율적으로 이루어져있다.

 

균형 트리는 나무를 거꾸로 표현한 자료 구조로, 트리에서 제일 상단의 뿌리를 루트, 줄기를 중간, 끝에 달린 잎을 리프라고 부른다.

 

균형 트리

 

 

균형 트리 구조에서 데이터가 저장되는 공간을 노드(Node)라고 한다. 루트 노드(Root Node)는 노드의 가장 상위 노드를 말한다. 모든 출발은 루트 노드에서 시작된다. 리프 노드(Leaf Node)는 제일 마지막에 존재하는 노드를 말한다. 루트 노드와 리프 노드 사이에 있는 노드를 중간 노드(Internal Node)라고 한다.

 

 

 

노드라는 용어는 개념적인 설명에서 주로 나오는 용어이며, MySQL에서는 페이지(Page)라고 부른다.


인덱스는 균형 트리로 이루어져 있기 때문에 SELECT의 속도를 향상시킬 수 있다. 다만 인덱스를 구성하면 데이터 변경 작업(INSERT, UPDATE DELETE) 시 성능이 나빠진다. 특히 INSERT 작업이 일어날 때 더 느리게 입력될 수 있다.

 

이유는 페이지 분할이라는 작업이 발생하기 때문인데, 페이지 분할이란 새로운 페이지를 준비해서 데이터를 나누는 작업을 말한다. 페이지 분할이 일어나면 MySQL이 느려지고, 너무 자주 일어나게되면 성능에 큰 영향을 미친다.

 

INSERT 문으로 인한 페이지 분할

 

 

페이지 분할로 인한 중간 노드의 생성

저작자표시 (새창열림)

'📟 Database > 혼자 공부하는 SQL' 카테고리의 다른 글

[MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)  (0) 2022.04.10
[MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)  (0) 2022.04.09
[MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스  (0) 2022.04.09
[MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제)  (0) 2022.04.09
[MySQL] 10. SQL 테이블 제약조건(기본키, 외래키, 고유키)  (0) 2022.04.09
'📟 Database/혼자 공부하는 SQL' 카테고리의 다른 글
  • [MySQL] 15. 스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)
  • [MySQL] 14. 인덱스의 생성과 제거 문법(CREATE INDEX, DROP INDEX)
  • [MySQL] 12. 인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스
  • [MySQL] 11. 가상의 테이블: 뷰(생성, 수정, 삭제)
Baeg-won
Baeg-won
  • Baeg-won
    좋았다면 추억이고 나빴다면 경험이다.
    Baeg-won
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍃 Spring, Spring Boot
        • 스프링 프레임워크 기초
        • 스프링 핵심 원리 - 기본편
        • 자바 ORM 표준 JPA 프로그래밍 - 기본편
        • 스프링 MVC
        • 실전! 스프링 부트와 JPA 활용1 - 웹 애플리..
      • 🥑 Web Technoloy
      • 🚗 Backend Toy Project
        • 스프링 부트 게시판
        • Photogram
        • Baeg-won Clothing Gallery
      • 🥇 Problem Solving
        • Breadth-First Search
        • Depth-First Search
        • Backtracking
        • Simulation
        • Two-pointer
        • Binary Search
        • Greedy
        • Dynamic Programming
        • Minimum Spanning Tree
        • Dijkstra
        • Floyd warshall
      • ☕ Java
        • 명품 자바 에센셜
        • Applications
      • 🍦 JavaScript
        • JavaScript 기초
      • 🐧 Linux
        • 이것이 리눅스다(CentOS 8)
      • 📟 Database
        • 혼자 공부하는 SQL
      • 🧬 Data Structure
      • 🎬 HTML
      • 🎤 Tech Interview
      • 📌 etc
        • Unity 2D Raising Jelly Game
        • C++
        • 영어 쉐도잉
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Baeg-won
[MySQL] 13. 인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기
상단으로

티스토리툴바