worxphere-tech - Medium · 2026. 09. 30.
Outbox Table에 PostgreSQL Daily Partitioning 적용하기
AI 엔지니어링 브리핑
이 글은 이벤트가 많이 쌓이는 Outbox 테이블을 PostgreSQL의 날짜별 파티션으로 나누고, 오래된 데이터를 데이터베이스 부담을 줄이면서 자동으로 정리한 방법을 설명합니다.
문제 & 배경
- 문제 & 배경: 이벤트가 발생할 때마다 Outbox 테이블에 데이터가 쌓여 약 2억 건까지 늘어났고, 이를 한꺼번에 삭제하면 Dead Tuple과 Vacuum 작업으로 데이터베이스 전체에 큰 부하가 생길 수 있었습니다.
기술 & 해결책
- 기술 & 해결책: 토픽별로 테이블을 나눈 뒤 생성일 기준 하루 단위의 하위 파티션을 만들고, pg_partman이 파티션 생성·삭제를 관리하도록 설정했으며 pg_cron이 매일 정해진 시간에 유지보수 작업을 실행하게 했습니다.
교훈 & 주의점
- 교훈 & 주의점: 오래된 데이터를 행 단위로 삭제하는 대신 파티션 자체를 삭제해 Vacuum 부담을 줄였지만, 실제 적용에는 DBA 협업과 Debezium·Kafka 설정 변경 등 주변 시스템까지 함께 점검해야 했습니다.
함께 읽을 글
내용이 비슷해요내용이 비슷한 글을 먼저 보여드려요. 같은 문제나 해결책을 다룬다는 뜻은 아니에요.