본문 바로가기

개발기술/RDB

데이터베이스 저장구조

 

MySQL(InnoDB) 저장 구조 계층

Tablespace (ibd 파일, ibdata1)
  └─ Segment (테이블, 인덱스 단위)
       └─ Extent (64 Page = 1MB)
            └─ Page (16KB, Oracle Block과 동일)

 

 

ㄴㄴ

Tablespace (테이블스페이스)

  • 테이블스페이스는 실제로 디스크 파일(.ibd, ibdata) 로 존재.

종류:

  1. System Tablespace (ibdata1) : InnoDB 시스템 메타데이터, undo log 등 저장.
  2. File-Per-Table Tablespace (.ibd 파일)
    • 테이블/인덱스마다 개별 파일이 생김.
    • 보통 table_name.ibd 파일.
    • 이 안에 해당 테이블의 Segment → Extent → Page 가 들어있음.
  3. General Tablespace
    • 여러 테이블을 한 파일에 담을 수 있는 사용자 정의 테이블스페이스.

 

Segment (세그먼트)

  • InnoDB는 내부적으로 세그먼트라는 개념을 씀 (테이블마다, 인덱스마다).
  • 예: customer 테이블을 만들면 → 데이터 세그먼트 + 인덱스별 인덱스 세그먼트 생성.
  • InnoDB의 세그먼트도 결국 Extent들의 모임.

 

Extent (익스텐트)

  • 처음에는 테이블/인덱스가 작으면 몇 페이지만 할당하지만, 커지면 Extent 단위로 확장됨.
  • 64개의 페이지(= 1MB) 를 묶어서 Extent 라고 함.
  • Extent에는 두 종류가 있음:
    • Uniform Extent: 64 페이지 전부를 하나의 세그먼트(테이블/인덱스)가 사용.
    • Mixed Extent: 작은 오브젝트일 때 여러 세그먼트가 Extent 안의 Page를 나눠 사용.

 

Page (페이지) = Block

  • InnoDB에서 I/O 최소 단위Page라고 부름.
  • 기본 크기: 16KB (하지만 설정 가능).
  • Oracle의 Block 과 동일한 개념.
  • 페이지 종류:
    • 데이터 페이지 (실제 레코드 저장)
    • 인덱스 페이지 (B+Tree 노드 저장)
    • Undo/Redo 로그 페이지
    • 시스템 페이지