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을 적절히 관리하면 성능을 크게 개선할 수 있음! 🚀
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…