PgQue: Zero-Bloat Postgres Queue
·2026.04.19 01:50
핵심 내용
Postgres에서 bloat 없이 동작하는 순수 SQL 큐를 소개한다.
자세히 보기
PgQue는 PgQ 아키텍처를 다시 가져와, C extension이나 별도 daemon 없이 pure SQL + PL/pgSQL로 동작하는 Postgres 큐다.
- 핵심 목표는 dead tuples와 VACUUM 부담을 줄여, 장시간 고부하에서도 성능 저하가 적은 큐를 만드는 것.
- 구현은 snapshot-based batching과 TRUNCATE-based table rotation에 기반한다.
- **Postgres 14+**에서 동작하며, RDS, Aurora, Cloud SQL, AlloyDB, Supabase, Neon 같은 managed Postgres 환경도 지원한다.
- 설치는
sql/pgque.sql하나로 가능하고, 기본 tick은 pg_cron으로 돌리거나 외부 scheduler로 직접 호출할 수 있다. - 기본 지연은 tick과 poll 때문에 보통 1~2초 수준이며, 대신 send/receive/ack 자체는 microsecond 단위로 빠르다.
비교 관점에서는, PgQue는 일반적인 SKIP LOCKED + DELETE/UPDATE 기반 job queue와 달리 누적 bloat를 피하는 데 초점을 둔다.
- 장점: zero bloat, fan-out 소비자 모델, ACID 트랜잭션, SQL로만 운용 가능
- 단점: 초저지연 dispatch에는 맞지 않음, per-job priority나 전형적인 worker framework 기능은 약함
사용 시나리오는 event-driven fan-out, 장기 운영 안정성, language-agnostic SQL API가 중요할 때다. 반대로 sub-3ms latency, cron, unique jobs, 깊은 ecosystem 통합이 필요하면 전통적인 job queue가 더 적합하다.
역할도 분리되어 있다.
pgque_reader: 조회/디버깅pgque_writer: producer/consumer용 APIpgque_admin: 운영 및 migration
프로젝트는 아직 early-stage지만, 성능 벤치마크와 예제, Python/Go/TypeScript 클라이언트 초안까지 포함해 실제 도입 가능성을 보여준다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.