Go로 PostgreSQL 프록시 만들기 (35) - Query Digest와 Top-N 쿼리 분석
쿼리를 정규화하여 패턴별 실행 횟수, 평균/P50/P99 레이턴시를 집계하는 Query Digest 기능을 구현한다. pg_stat_statements의 프록시 버전.
쿼리를 정규화하여 패턴별 실행 횟수, 평균/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이 밀릴 때 생기는 실무 장애 패턴, 튜닝 기준, 트레이드오프와 체크리스트를 정리합니다.
원시 타입과 래퍼 클래스의 메모리 차이, 오토박싱의 함정, 그리고 String Pool의 동작 원리까지