파티셔닝 심화 — 운영 환경 파티션 추가·삭제·이동 실전
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. 운영 중인 파티션 테이블에서 오래된 파티션을 가장 빠르게 삭제하는 방법은?
💡 파티션을 DROP TABLE로 삭제하면 파일 시스템 수준에서 즉시 제거되므로 수억 건의 데이터도 밀리초 내에 삭제됩니다. DELETE는 행마다 처리하고 VACUUM이 필요하며, TRUNCATE도 내부 처리가 필요합니다. DETACH는 데이터를 유지한 채 분리합니다.
Q2. DETACH PARTITION CONCURRENTLY의 특징으로 옳은 것은?
💡 DETACH PARTITION CONCURRENTLY (PG14+)는 강한 AccessExclusiveLock 없이 파티션을 분리합니다. 다른 세션의 쿼리를 차단하지 않아 무중단 운영이 가능합니다. 단, 트랜잭션 블록 내에서는 사용할 수 없습니다.
Q3. 독립 테이블을 파티션으로 ATTACH할 때 성능을 높이는 방법은?
💡 ATTACH PARTITION은 기본적으로 모든 데이터가 파티션 범위에 맞는지 검증합니다. 미리 NOT VALID CHECK 제약을 추가해두면 PostgreSQL이 이미 검증되었다고 판단하여 데이터 검증을 건너뜁니다. 대용량 테이블에서 ATTACH 속도를 크게 향상시킵니다.
Q4. 파티션 자동 생성을 구현할 때 권장되는 시기는?
💡 파티션은 데이터가 도달하기 최소 2~3개월 전에 미리 생성해야 합니다. 파티션 생성이 늦어지면 데이터가 DEFAULT 파티션으로 들어가거나 에러가 발생합니다. CI4 Scheduled Task나 cron으로 자동화하는 것이 권장됩니다.
Q5. 파티션 특정 파티션만 VACUUM ANALYZE하면 어떤 이점이 있는가?
💡 파티션 단위로 VACUUM ANALYZE를 실행하면 전체 테이블에 비해 처리 대상이 훨씬 작아 빠르고 자원 소비가 적습니다. 특히 자주 변경되는 최근 파티션과 변경이 없는 과거 파티션을 분리하여 유지보수 전략을 수립할 수 있습니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.