Oracle 데이터베이스에서 테이블이나 인덱스에 데이터를 저장할 때, 공간 관리와 성능 최적화를 위해 FreeList와 HWM(High Water Mark)가 중요한 역할을 합니다.
| 개념 | 설명 |
|---|---|
| FreeList | 테이블이나 인덱스에서 새로운 데이터가 삽입될 수 있는 여유 공간(블록) 목록 |
| HWM (High Water Mark) | 테이블에서 한 번이라도 데이터가 기록된 가장 마지막 블록의 위치 |
FreeList란?
FreeList 관리 방식
📌 FreeList 개수 조정 예제
ALTER TABLE employees STORAGE (FREELISTS 5); ✔ FreeList가 중요한 이유
HWM이란?
✔ HWM의 특징
| 단계 | 설명 |
|---|---|
| 1. 새로운 INSERT 발생 | FreeList에서 사용 가능한 블록을 찾음 |
| 2. 빈 블록이 FreeList에 존재하면 | FreeList에서 가져와 데이터를 저장 |
| 3. FreeList에 빈 블록이 없으면 | HWM을 증가시켜 새로운 블록 할당 |
📌 FreeList 사용 예제
INSERT INTO employees VALUES (1001, 'John Doe', 'IT'); ✔ 동작 방식:
데이터를 삭제해도 HWM이 줄어들지 않음.
즉, FULL TABLE SCAN 시 여전히 삭제된 블록을 스캔해야 하므로 성능 저하 가능.
📌 예제: DELETE 수행 후 HWM 유지됨
DELETE FROM employees WHERE department = 'IT'; ✔ 문제점:
TRUNCATE 명령어를 사용하면 HWM이 리셋되므로, FULL TABLE SCAN 시 불필요한 블록을 스캔하지 않음.
TRUNCATE TABLE employees; ✔ 결과:
SHRINK SPACE 명령을 사용하면 HWM을 낮추면서 데이터를 유지할 수 있음.
ALTER TABLE employees ENABLE ROW MOVEMENT;
ALTER TABLE employees SHRINK SPACE; ✔ 결과:
ALTER TABLE sales STORAGE (FREELISTS 10); ✔ 결과:
TRUNCATE TABLE orders; ✔ HWM 초기화 + FreeList 재설정ALTER TABLE orders ENABLE ROW MOVEMENT; ALTER TABLE orders SHRINK SPACE; ✔ HWM을 낮추면서 데이터 유지 가능CREATE TABLE orders (
order_id NUMBER,
order_date DATE
)
PARTITION BY RANGE (order_date) (
PARTITION p_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')),
PARTITION p_2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD'))
); ✔ 결과:
| 항목 | FreeList | HWM (High Water Mark) |
|---|---|---|
| 개념 | 사용 가능한 빈 블록 목록 | 한 번이라도 데이터가 저장된 마지막 블록 위치 |
| 역할 | 새로운 데이터 삽입 시 사용 가능한 공간 제공 | FULL TABLE SCAN 범위를 결정 |
| INSERT 시 영향 | 빈 블록이 있으면 재사용, 없으면 HWM 증가 | FreeList에 공간이 없으면 HWM 증가 |
| DELETE 후 영향 | FreeList에 공간 추가 가능 | 삭제 후에도 HWM이 줄어들지 않음 |
| 최적화 방법 | FreeList 개수 증가 | TRUNCATE, SHRINK SPACE 사용 |
| FULL TABLE SCAN 시 영향 | 영향 없음 | HWM까지 모든 블록을 읽어야 하므로 성능에 영향 |
✅ FreeList는 INSERT 성능을 향상시키는 핵심 요소이며, HWM은 FULL SCAN 성능에 영향을 미치는 중요한 지표
✅ DELETE를 수행해도 HWM은 줄어들지 않으므로 TRUNCATE 또는 SHRINK를 활용하여 최적화 가능
✅ 대량의 데이터를 다루는 경우 FreeList와 HWM을 적절히 관리하면 성능을 크게 개선할 수 있음! 🚀
1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…