[PERF] Home 연속 학습 계산을 위한 연주 이력 조회 개선 - #262
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough완료 연주의 날짜 조회를 네이티브 SQL로 변경했습니다. Changes연습 날짜 조회 변경
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to The updated practice-date flow has no confirmed merge-blocking issue. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. KST 날짜가 줄을 맞추고 Comment |
There was a problem hiding this comment.
end-to-end 성능도 함께 확인해보면 좋을 것 같습니다! 현재 결과를 보면 반환 Row 수는 10,000 → 365로 크게 감소했는데, 그에 비해서 DB Execution Time은 평균 6.14ms → 13.48ms로 증가했네용!?!?
이번 변경의 목적이 DB 쿼리 자체를 빠르게 하는 것보다는 DB → Application 전송량과 애플리케이션의 날짜 변환/중복 제거 비용을 줄이는 것이라면, 가능하면 동일 데이터셋에서 Home API 전체 응답 시간이나 해당 처리 구간의 전/후 시간도 같이 측정해두면 실제 최적화 효과를 조금 더 명확하게 확인할 수 있을 것 같습니다! 😁😁
수고 많으셨어요~~
|
리뷰 반영하여 동일 데이터셋에서 Home API E2E 성능 추가 측정했습니다! |
📍 개요
⛓️💥 관련 이슈
🛠️ 작업 내용
endedAt을 조회하던 방식에서 DB에서 날짜 단위로 중복 제거하여 조회하도록 변경endedAt을Asia/Seoul기준 날짜로 변환하여 서비스 정책에 맞는 KST 연습 날짜 조회DISTINCT처리하여 동일 날짜에 여러 번 연주한 경우 하나의 연습 날짜만 애플리케이션으로 반환endedAt을 KSTLocalDate로 변환하던 처리 제거🔥 리뷰 요청 사항
AT TIME ZONE 'Asia/Seoul'및DISTINCT처리가KST 기준 연습 날짜 계산에 적절한지 확인 부탁드립니다.
date결과를 반환하고 HomeService에서LocalDate로 변환하는 방식이 적절한지 확인 부탁드립니다.동일하게 유지되는지 확인 부탁드립니다.
✅ 체크리스트
📎 참고 사항
성능 테스트 환경
user_id = 2000EXPLAIN (ANALYZE, BUFFERS)를 이용하여 DB Query Execution Time 및 반환 Row 수 비교연습 날짜 조회 성능 비교
SetDISTINCTendedAt을 모두 애플리케이션으로 전달 → KST 기준LocalDate변환 및Set중복 제거를 수행endedAt을Asia/Seoul기준 날짜로 변환 →DISTINCT처리하여 실제 필요한 365개의 연습 날짜만 반환이에 따라 DB → Application으로 전달되는 Row 수가 10,000건에서 365건으로 약 96.35% 감소했으며, 애플리케이션에서 날짜 변환 및 중복 제거를 수행해야 하는 데이터 범위도 함께 감소했습니다.
테스트
Home API End-to-End 성능 측정
DB 쿼리 자체의 Execution Time 외에도 실제 Home API 전체 처리 성능에 미치는 영향을 확인하기 위해 동일 데이터셋에서 k6로 Before/After를 측정했습니다.
측정 조건
GET /api/homeDB에서 KST 날짜 변환 및 DISTINCT를 수행하면서 쿼리 자체의 Execution Time은 증가했지만,
반환 Row가 10,000건에서 365건으로 감소하면서 DB → Application 데이터 전달량과
애플리케이션의 날짜 변환/중복 제거 비용이 감소했습니다.
그 결과 동일 데이터셋의 Home API E2E 측정에서는 평균 응답시간이 약 33.2%,
p95 응답시간이 약 39.8% 감소했습니다.
Summary by CodeRabbit
개선 사항
테스트