image.png

image.png

참고

DB는 항상 블록 단위 I/O를 한다.

Row 1개 조회 요청
→ 블록 하나 통째로 메모리에 올림
→ 그 안에 다른 Row들도 같이 올라옴

INSERT 많으면 → 익스텐트 계속 추가
삭제 많아도 → 익스텐트는 줄지 않음

세그먼트 = 블록 +_ 익스텐트

PK를 랜덤 UUID로 쓰면 왜 망하는지!

❓ “UNDO / REDO도 창고 비유로 설명해줘”
❓ “왜 DELETE보다 TRUNCATE가 빠른지”

👉 WHERE / ORDER BY 때문에 테이블의 모든 블록을 먼저 메모리에 올리지는 않는다.
👉 항상 “필요한 블록만, 가능한 적게” 읽으려고 한다.

1. 테이블 내부 공간 구조

테이블스페이스 = 창고
세그먼트 = 선반 묶음(한 테이블 전용 구역)
익스텐트 = 선반 한 줄 묶음
블록 = 박스
행(Row) = 박스 안의 사과/딸기

1️⃣ 테이블스페이스 (Tablespace) = 창고

2️⃣ 세그먼트 (Segment) = 특정 물건 전용 선반 구역

<aside> 💡

Segment는 여러 선반들의 집합이 될 수 있나?

</aside>

3️⃣ 익스텐트 (Extent) = 선반 한 묶음