Go로 PostgreSQL 프록시 만들기 (40) - sync.Pool로 할당 줄이기와 최적화의 한계
pprof 할당 프로파일링에서 찾은 상위 3개 핫스팟에 sync.Pool과 버퍼 사전할당을 적용한다. 그리고 Go 프록시 성능 최적화의 현실적 한계를 정리한다.
pprof 할당 프로파일링에서 찾은 상위 3개 핫스팟에 sync.Pool과 버퍼 사전할당을 적용한다. 그리고 Go 프록시 성능 최적화의 현실적 한계를 정리한다.
쿼리를 정규화하여 패턴별 실행 횟수, 평균/P50/P99 레이턴시를 집계하는 Query Digest 기능을 구현한다. pg_stat_statements의 프록시 버전.
pgbench로 Direct DB, pgmux, PgBouncer를 3자 비교하고, hot path 최적화로 SELECT-only 46%→83%로 개선한다.
pprof CPU/alloc 프로파일링으로 병목을 찾고, atomic.Pointer·ReadMessageReuse·wire buffer 재사용을 적용한다. 그리고 응답 batching이 왜 '투명한 프록시'의 원칙을 깨는지 분석한다.
세션 상태 추적으로 불필요한 DISCARD ALL을 건너뛰고, RouteWithTxState로 lock 횟수를 줄이고, 벤치마크 방법론을 개선한다.
QA 3차 리포트 5건 — AST 분류가 라우팅에 미반영, 캐시 테이블 무효화 no-op, 중복 파싱 5회/요청, 헬스체크 순차 지연, splitStatements 달러쿼팅 미처리 — 의 원인과 수정 과정을 정리한다.
프로덕션 쿼리를 Shadow DB에 비동기 미러링하여 패턴별 P50/P99 레이턴시를 비교하고 성능 회귀를 자동 감지하는 기능을 구현한다. PgBouncer에 없는 pgmux만의 킬러 피처.
지속적 프로파일링이 왜 2026년 실무 표준으로 올라오는지, APM과 어떻게 역할을 분리하고 어떤 기준으로 도입해야 하는지 정리합니다.
DB 락 경합을 측정하고 완화하는 실무 기준: 대기 시간, 충돌 패턴, 트랜잭션 설계, 운영 체크리스트
PostgreSQL에서 autovacuum이 밀릴 때 생기는 실무 장애 패턴, 튜닝 기준, 트레이드오프와 체크리스트를 정리합니다.