타일러님 답변
- 타임아웃이 발생한다면 그것을 해결할 만한 다른 방법은 없을지
- (가능한 예약 조회하기 맞죠?) 응답속도를 줄이기 위해 외부적 요인(DB) 말고 내부적 요인 (코드)에서 개선해볼만한 부분은 없을지 (개선하면서 문제는 적절하게 처리 가능하지 않을지?)
- 성능테스트를 어떤식으로 했는지 (부하를 얼마나 주었는지)
- 10분에 걸쳐서 일정한 요청을 지속적으로 보냄
- 적당히 부하 준것 같은게 TPS인지?
- CPU, RAM 사용량?
- 어떤게 평균 TPS일지? 그 기준은?
- 10분~60분 단위로 테스트를 진행했을 때 나타나는 평균값?
- 부하는 언제까지 줘야 하는지?
- 시나리오에 따라 다르다고 생각함
- 타임아웃은 왜 나는건지? DB쿼리의 성능은 나오는건지? (실행계획, 인덱스 등)
- 여러가지 요인이 존재함
- 과도한 부하를 줄 필요가 없다면 성능테스트를 왜 하는지?
- 과도한 부하가 필요 없더라도 사용자 만족도를 위해서 해야함.
목표1
정적과 동적 중에 어떤 방법이 더 나은지
- CPU사용량 같게 맞추고 → TPS차이 (70퍼)
- Response Time
목표2
동적 개선방식
정적 조회
@Query("select distinct d from Designer d join fetch d.reservationTimes r " + "where d.hairshop.id = :hairshopId and r.date = :date and r.reserved = false") List<Designer> findDesignerFetchJoinByHairshopIdAndDate(@Param("hairshopId") Long hairshopId, @Param("date") LocalDate date);
동적 조회
@Query(value = "SELECT distinct d from Designer d left join fetch d.reservations r where d.hairshop.id = :hairshopId and r.date=:date") List<Designer> findByHairshopIdAndDate(@Param("hairshopId") Long hairshopId, @Param("date") LocalDate date);
List<Designer> findByHairshopId(Long hairshopId);