728x90
회사에서 C#을 자바로 전환하는 작업을 하고있다.
약 16만 건의 데이터를 조회하고 페이징 하는 작업 중 화면까지 로딩 되는 시간이 오래 걸렸다.(3초 정도)
데이터가 그렇게 큰 것 같진 않은데 오래걸려서 속도를 단축시켜봤다.
테이블 구조는 예전에 만들어져 있던 것이라 수정할 수 없었고, 같은 테이블이 4번씩 조인되어 있었는데, 이러한 부분을 없애고, 자바쪽에서 데이터를 가공했다.
그 결과 1.3 ~ 1.5초로 단축했는데, 만족스럽지 않았다.
비슷한 경험을 한 회사 동료가 페이징 때문에 total을 계산 하는 쪽이 문제가 될 수도 있다고 해서, 그 부분을 없애니 속도가 0.1초대로 빨라졌다.
JPAQuery<DTO> jpaQuery = query
.select(
Projections.constructor(DTO.class,
data,
data2
)
)
.from(t)
.leftJoin(t2).on(t1.userId.eq(t.userId))
.leftJoin(t3).on(t2.testId.eq(t.testId))
.where(builder);
int total = jpaQuery.fetch().size();
total 부분은 원래 fetchCount()로 했었는데, 이제 사용을 못해서 저렇게 사용했었는데,
int total = query
.select(
t.userId.count()
)
)
.from(t)
.leftJoin(t2).on(t1.userId.eq(t.userId))
.leftJoin(t3).on(t2.testId.eq(t.testId))
.where(builder)
.fetchFirst();
이렇게 수정해서 속도를 향상시킬 수 있었다.
0.3초 정도 나왔다.
기존 코드에서는 페이징 끝 페이지로 이동 시 12초 정도 나왔는데(C#),
개선 후 0.7초로 줄일 수 있었다.
728x90
'개발 > Java&Kotlin' 카테고리의 다른 글
[Spring] 알아두면 좋은 디자인 패턴 (1) | 2022.11.15 |
---|---|
[Spring] RestTemplate 사용하기 (0) | 2022.10.31 |
[Spring] 동시성 이슈 해결 방법 (4) (2) | 2022.09.26 |
[Spring] 동시성 이슈 해결 방법 (3) (0) | 2022.09.22 |
[Spring] 동시성 이슈 해결 방법 (2) (0) | 2022.09.21 |