728x90

Filter 2

[PostgreSQL] SLA 대시보드: percentile_cont(p50/p95/p99) + FILTER + TABLESAMPLE

설치·접속: PostgreSQL 설치와 접속부제: API 응답시간 로그에서 엔드포인트별 p50/p95/p99를 뽑고, 2xx/5xx를 나눠 보고, 로그가 수억 행일 때 표본으로 근사할 때문제 상황응답시간 대시보드에 avg(latency_ms)만 그려 놓고 "평균 35ms, 괜찮네"라고 안심하던 팀이 있다. 그런데 사용자 항의는 계속 들어온다. 평균은 롱테일에 속는다. SLA는 평균이 아니라 p95/p99로 말해야 한다. API 로그 60만 건(엔드포인트 3종, 롱테일 지연 분포)을 스크래치 테이블 api_log(endpoint, status_code, latency_ms)로 만들어 세 기능을 얹는다.1단계 — percentile_cont로 분위수를 한 번에percentile_cont(f) WITHIN G..

명령어/DB 2026.07.21

[PostgreSQL] 월간 매출 리포트 한 방에: ROLLUP + FILTER + GROUPING()

설치·접속: PostgreSQL 설치와 접속부제: 카테고리별·월별 매출에 소계와 총계, 환불액까지 붙인 리포트를 UNION ALL 없이 단일 SELECT로 뽑을 때문제 상황카테고리별 매출, 카테고리+월별 매출, 그리고 전사 총계를 한 표에 뿌려야 한다. 흔한 방식은 GROUP BY가 다른 쿼리를 3~4개 만들어 UNION ALL로 붙이거나, 앱에서 각 레벨을 다시 집계하는 것이다. 여기에 "완료 매출과 환불액을 나란히" 요구가 붙으면 쿼리는 더 늘어난다. 이걸 ROLLUP + FILTER + GROUPING() 조합으로 단일 SELECT에 담는다.검증용 스크래치 테이블은 주문 200건에 카테고리(electronics/apparel/grocery), 판매월(1~4월), 상태(paid/refunded/can..

명령어/DB 2026.07.21
728x90