일상이 바빠서 해결할 수 없는 일들을 히어로에게 맡겨보세요!
[프로젝트 소개] 단기 알바, 심부름과 같이 일상의 작은 도움이 필요한 사람들과 소소하게 돈을 벌고 싶은 사람들을 이어주는 중계 플랫폼
[프로젝트 기간] 2023.10 - 2023.12
[프로젝트 링크] GitHub Repo | Website
[주요 사용 기술]
[문제 상황]
/api/v1/missions/matching 엔드포인트에서 이미지 단건 반복 쿼리로 인한 n + 1 문제 발생
[그림 1] 이미지 단건 반복 쿼리가 발생하는 코드
[해결 방안]
벌크 SELECT 쿼리
In 절로 한 번에 조회한 뒤 stream api의 groupingby를 통해 그루핑하여 응답 DTO 생성
[그림 2] 벌크 SELECT 쿼리가 발생하도록 코드 리팩토링
실행계획 분석하여 슬로우 쿼리 튜닝
인덱스 컨디션 푸시다운, 인덱스를 이용한 정렬
[그림 3] 인덱스 컨디션 푸시다운, 인덱스를 이용한 정렬로 튜닝
커버링 인덱스
[그림 4] 커버링 인덱스로 튜닝
→ 응답 시간이 5889ms에서 333ms로 감소하여 94.32% 성능 향상
[관련 링크]