프로젝트 회고

Optimizer 中 Projection 연산 적용 시 검색 속도 향상

iksadnorth 2023. 11. 29. 23:00

👣 개요

Projection 연산을 통해 꼭 필요한 정보만 가져와 검색 속도 향상.

 

👣 실험 계획

Review 테이블의 Row 갯수는 10만 개 입니다.
그리고 Review 테이블의 칼럼 갯수는 총 5개 입니다.

만약 DTO에서 5개의 칼럼을 모두 요구하는 것이 아닌
특정 칼럼만 요구한다는 상황을 가정.

ReviewResponse 는 id, rating이라는 2개의 칼럼만 요구하고 있다.

실험에 사용되는 테스트 코드는 위와 같이
순차적으로 N번 메서드를 호출하고 해당 실행 시간을 확인하는 형태로 진행된다.

 

👣 실험 수행

⚗️ 대조군 - Projection 없이 그냥 모든 칼럼 가져오기.

50번 정도 메서드를 호출했을 때의 결과다.

16776 ms, 즉 16.776초가 걸림을 알 수 있다.

 

⚗️ 실험군 - 딱 필요한 칼럼만 가져오기.

위 코드와 같이 Repository Layer에서 아예 ReviewResponse 타입으로 전달하게 구성했다.

50번 정도 메서드를 호출했을 때의 결과다.

3351 ms, 즉 3.351초가 걸림을 알 수 있다.

 

👣 실험 결과

결과적으로 Projection 연산에 의한 검색 속도 향상은 꽤 큰 이점을 가져다 주었고 표로 정리하면 다음과 같다.

  특징 수행 시간 향상 효과
대조군 모든 칼럼 조회 16776 ms -
실험군 일부 칼럼 조회 3351 ms 80.03% 감소