LawDigest / Lawbag

LawDigest repo
1 stars 1 forks source link

Fix(#Mainfeed-Performance) 메인피드 조회 API 성능 향상 #215

Closed ganjisriver closed 3 months ago

ganjisriver commented 3 months ago

내용

메인 피드 조회 시 API 성능 향상 2~3초에서 0.3~0.7초로 성능 향상

세부 사항

기존 메인 피드를 조회하기 위해서는 페이징 쿼리 + 법안 관련 데이터를 가져오기 위한 Fetch Join 쿼리로 총 2가지의 쿼리로 이루어져있다.

페이징 쿼리에서 성능 저하의 원인이 발생함.

쿼리 변경점

기존 쿼리 image

변경 쿼리 image

기존 쿼리의 배경 Bill과 RepresentativeProposer의 관계가 OneToOne이기 때문에, Bill을 조회할 때마다 RepresentativeProposer를 호출하는 쿼리를 자동으로 호출했기 때문에, 이를 방지하기 위해 FetchJoin을 활용하여 같이 가져왔는데 이 부분이 문제를 발생시켰다. -> Fetch Join을 EntityGraph를 활용하여 RepresentativeProposer를 가져오는 방식으로 페이징 쿼리를 변경하였음.

결과 기존 메인피드 API호출이 2~3초에서 0.2초 ~ 0.7초로 바뀜

네트워크 비용을 고려하지 않고 어플리케이션 레이어 내에서 기존 페이징 쿼리는 무려 0.9초가 걸렸고, 변경된 쿼리는 2개의 쿼리를 합쳐도 0.1초 이내로 처리 가능했음.

기존 쿼리가 성능 저하를 발생시켰던 이유

작성 예정