3/7 - TIL

헨도·2025년 3월 7일
2

TIL

목록 보기
15/21
post-thumbnail

MySQL 내부 B-Tree 동작 원리를 알아보는 과정에서 노드 데이터가 추가, 수정, 삭제 단계를 거쳤을 때, 내부에서는 재정렬을 시키는데 이 명령을 내리는 주체가 누구인가 궁금증이 들었다.

정답은 Inno DB 였다.

AWS 에서 MySQL 을 생성할 때, Inno DB 관련돼서 물어보는데 이 이유가 있었던 것이다...
ㅈㄴ 유레카

그래서 정리를 한번 해보았다.

Inno DB

  • 데이터가 추가돼서 B-Tree 노드를 정리해야 하는 주체는 Inno DB 스토리지 엔진이다.
  • 이 엔진은 내부적으로 B-Tree 구조를 관리하고, 데이터 삽입, 삭제 등으로 트리 구조가 불균형하게 될 경우, 이를 자동으로 조정하라는 명령을 내린다.

하는 일

자동 균형 조정

  • 데이터가 추가되거나 삭제될 때, B-Tree 구조의 균형을 유지하기 위해 자동으로 노드를 정리한다.
  • 새로운 데이터가 삽입되어 B-Tree가 불균형을 이루면, InnoDB는 노드를 분할하거나 병합하여 균형을 맞춥니다.

인덱스 분할과 병합

  • B-Tree 노드가 가득 차면 분할하여 새 노드를 만들고, 반대로 노드가 너무 비어있으면 병합을 통해 불필요한 노드를 제거한다. (자동 수행)

버퍼 풀 관리

  • Inno DB 는 버퍼 풀을 사용하여 데이터를 메모리에 갱신하고, 디스크에서 데이터를 읽고 쓸 때 효율성을 극대화한다.
  • 버퍼 풀은 데이터 페이지의 삽입, 삭제, 갱신 작업 후에도 항상 B-Tree 구조가 정상적으로 유지되도록 도와줍니다.

기타 최적화 작업

  • 데이터 삽입, 삭제가 빈번할 경우 성능을 위해 "OPTIMIZE TABLE" 같은 명령어 사용이 가능하다.
  • 이 명령은 테이블을 재구성하여 저장 공간을 최적화하고, B-Tree 구조를 다시 정리하는 역할을 한다.
    (이 명령어 작업은 수동으로 작성하여 최적화할 수 있다.)
profile
Junior Backend Developer

0개의 댓글