[개발 일기] 2025.03.09 - InnoDB

2025. 3. 9. 22:26·개발 일기

💡 개요

오늘은 어제 정리했던 MySQL의 엔진인 InnoDB에 대해 정리해 보자.

 

 

 

📕 InnoDB

InnoDB란 Innovative Database 의 약자로 MySQL의 기본 저장소 엔진이다.

 

 

주요 특징으론 모든 MySQL의 바이너리에 내장되어 있다. 그렇기 때문에 별도의 설치 없이 MySQL만 설치하면 자동으로 설치된다.

 

 

 

🛠️ InnoDB 구조

 

 

🛠️ InnoDB 특징

 

PK를 기준으로 클러스터링

 

InnoDB에서는 기본 키(PK) 값의 순서대로 데이터를 저장한다.

 

CREATE TABLE students (
    id INT PRIMARY KEY,   -- 기본 키 (PK)
    name VARCHAR(50),
    age INT
);

 

만약 데이터가 저장된다면 아래의 표처럼 저장될 것이다.

 

id (PK) name age
1 Alice 20
2 Bob 22
3 Charlie 21

 

 

이처럼 InnoDB는 데이터를 id(기본 키) 순서대로 물리적으로 저장한다.

 

 

그렇기 때문에 PK를 기반으로 데이터를 검색하면 빠른 조회 성능을 가진다.

 

 

MVCC (Multi-Version Concurrency Control)

 

MVCC란 다중 버전 동시성 제어로 락을 걸지 않고도 동시에 여러 트랜잭션이 데이터를 읽고 쓸 수 있도록 해주는 기술이다.

 

 

MVCC를 사용하면 단순한 읽기 작업만 진행하고자 할 땐, 데이터의 정합성을 해칠 위험이 적기 때문에 락 획득을 대기하지 않고 바로 데이터를 조회할 수 있다.

 

 

하지만 그만큼 동시성 문제와 같은 데이터 정합성・일관성 문제도 발생할 수 있다.

 

 

그렇기 때문에 트랜잭션 격리 수준을 잘 적용해야 한다.

'개발 일기' 카테고리의 다른 글

[개발 일기] 2025.03.11 - compareTo()  (0) 2025.03.11
[개발 일기] 2025.03.10 - 날짜 데이터 타입  (0) 2025.03.10
[개발 일기] 2025.03.08 - MySQL과 웹 애플리케이션  (1) 2025.03.08
[개발 일기] 2025.03.07 - Docker 볼륨 설정  (0) 2025.03.07
[개발 일기] 2025.03.06 - JPQL vs QueryDsl  (0) 2025.03.06
'개발 일기' 카테고리의 다른 글
  • [개발 일기] 2025.03.11 - compareTo()
  • [개발 일기] 2025.03.10 - 날짜 데이터 타입
  • [개발 일기] 2025.03.08 - MySQL과 웹 애플리케이션
  • [개발 일기] 2025.03.07 - Docker 볼륨 설정
오도형석
오도형석
  • 오도형석
    형석이의 성장일기
    오도형석
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • MSA 모니터링 서비스
        • DB
      • 스파르타 코딩클럽
        • SQL
        • Spring
      • 백엔드
        • Internet
        • Java
        • DB
      • 캡스톤
        • Django
        • 자연어처리
      • Spring
        • JPA
        • MSA
      • ETC
        • ERROR
      • 개발 일기 N
  • 블로그 메뉴

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

  • 인기 글

  • 태그

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
오도형석
[개발 일기] 2025.03.09 - InnoDB
상단으로

티스토리툴바