HANDS-ON
00:00 경과
LABLAB-DB-13-VACUUM-BLOAT중급
VACUUM·테이블 부풀림 — dead tuple과 bloat 진단
ELAPSED
00:00
PHASE
0 / 3
SLA
40분
🗄️ Database
← 목록
INCIDENT RESPONSE
0 / 4 단계 완료
📚 PREREQUISITES
Labpostgresql-setup
Theorydatabase/transaction-isolation
Theorydatabase/db-monitoring-observability
TRACK
DATABASE
SLA
40분
LEVEL
중급
PHASES
2단계
ENV
local
INCOMING TICKET
운영 티켓: "events 테이블이 매주 커져서 디스크를 다 먹어요. 행은 천만 건인데 테이블 크기는 80GB예요. 매일 대량 UPDATE/DELETE 하는 테이블인데 정상인가요?"
YOUR ROLE
주니어 인프라 엔지니어
안 하면 나중에
테이블 부풀림(bloat)으로 디스크 낭비·스캔 성능 저하 — 실제 데이터 대비 수 배 큰 테이블, 방치 시 디스크 풀로 쓰기 중단 위험
📋상황 브리핑
운영 티켓이 올라왔습니다.
"events 테이블이 매주 커져서 디스크를 거의 다 먹었어요. 행은 천만 건인데 테이블 파일 크기가 80GB나 돼요. 매일 대량으로 UPDATE/DELETE 하는 테이블인데, 이게 정상인가요? 데이터는 안 늘어나는데 왜 자꾸 커질까요?"
PostgreSQL의 MVCC는 UPDATE/DELETE 시 옛 버전 행(dead tuple)을 즉시 지우지 않고 남겨둡니다. 이게 쌓이면 테이블이 실제 데이터보다 훨씬 커집니다(bloat). pg_stat_user_tables로 dead tuple 비율과 autovacuum 동작을 확인하고, VACUUM으로 공간을 회수하며, autovacuum이 왜 못 따라갔는지를 진단합니다.
⏱ 40분📊 중급🔧 2단계#postgresql#vacuum#bloat#dead-tuple
MISSION
1
dead tuple과 bloat 진단
pg_stat_user_tables로 dead tuple 수·비율과 마지막 (auto)vacuum 시각을 확인해 부풀림을 진단한다
2
VACUUM으로 회수 + autovacuum 튜닝
VACUUM으로 dead tuple을 정리하고, VACUUM과 VACUUM FULL의 차이를 이해하며, autovacuum 임계치를 조정한다
📌 선수 지식
ℹ️ 실습 환경
환경: local
필요 도구: bash, postgresql, psql
검증 스크립트: /labs/lab-db-13-vacuum-bloat/scripts/verify.sh
🔒
실습 실행은 Pro 플랜 전용입니다
인시던트 브리프와 학습 자료는 지금 바로 확인할 수 있습니다. 실제 실습 진행 및 터미널 사용은 Pro 플랜에서 가능합니다.
Pro로 업그레이드 →
>_ LAB TERMINAL↔ 너비 조절
NOTES