[JPA] 집계 테이블로 통계 조회를 최적화하기
·
DB 접근 기술/JPA
개요서비스를 사용하는 사용자에게 원하는 데이터를 서비스하기 위해서는 데이터베이스에 쿼리를 하여 즉시 서빙하는 방식이 기본적입니다. 하지만 쿼리가 복잡해질수록 DB 에는 부하가 발생하고 이는 지연시간의 증가로 이어지게 됩니다. 좋아요 수, 주문 상품의 수 등의 여러 테이블에서 데이터를 집계하는 통계성 쿼리가 이에 해당됩니다. 이번 포스팅에서는 이런 통계성 쿼리를 시간별로 실행하여 집계 테이블에 저장하는 방식을 실습해보겠습니다. 실습은 다음의 링크에서 직접해보실 수 있습니다.https://github.com/juno71w/jpa-optimize-statistic-query GitHub - juno71w/jpa-optimize-statistic-queryContribute to juno71w/jpa-optim..
[JPA] 페이지네이션과 N + 1 문제
·
DB 접근 기술/JPA
개요대용량 트래픽 환경에서 JPA를 사용하다 보면 가장 자주 마주치는 문제 중 하나가 N + 1 문제입니다.특히 페이지네이션이 포함된 조회 API에서는 Fetch Join 사용에 제약이 생기기 때문에, 단순한 해결책이 오히려 더 큰 문제를 만들기도 합니다. 이번 포스트에서는 페이지네이션 API 에 대해서 어떤 쿼리 최적화 전략을 사용할지에 대해 알아보겠습니다. 배울 수 있었던 점Fetch Join 을 사용하기 어려운 페이지네이션 API 에서 사용할 수 있는 대안인 '쿼리를 나누어 IN 절로 묶기' 를 통해 문제를 해결할 수 있었습니다.또한 이 방법이 만능은 아니며 IN 절의 제한이 있는 DB에서는 다른 방식으로 해결할 수 있는 방법을 확인할 수 있었습니다. 해당 코드에 대한 실습은 다음 레포지토리에서 진..