SMALL
1분동안 3000건 전체 조회 ( 페이지 )
OS 환경 | Window 10 Pro |
RAM | 32GB |
MySQL | 8 |
PostgreSQL | 15 |
Spring | 3.1.2 |
JDK | 17 |
기존 코드
@Transactional(readOnly = true)
public List<IdeaResponse> findAllIdea(String keyword, Category category, Integer page) {
if (StringUtils.hasText(keyword) && !Objects.isNull(category)) {
throw new IdeaFindException(IdeaFindErrorCode.KEYWORD_CATEGORY_SAME);
}
List<IdeaResponse> findList;
Sort sort = Sort.by(Sort.Direction.ASC, "createdAt");
Pageable pageable = PageRequest.of(page, 10, sort);
if (StringUtils.hasText(keyword)) {
findList = ideaRepository.findAllByTitleContaining(keyword, pageable).stream()
.map(IdeaResponse::from)
.collect(Collectors.toList());
} else if (!Objects.isNull(category)) {
findList = ideaRepository.findAllByCategory(category, pageable).stream()
.map(IdeaResponse::from)
.collect(Collectors.toList());
} else {
findList = ideaRepository.findAll(pageable).stream()
.map(IdeaResponse::from)
.collect(Collectors.toList());
}
return findList;
}
응답시간과 TPS
hikari maximum-pool-size 80 으로 Connection Pool 증가
검색결과 max_connections default PostgreSQL 는 100개로 지정되어 있다.
안전한 마진: PostgreSQL의 max_connections 설정값에서 10-20%를 빼서 그 값 아래로 HikariCP의 maximum-pool-size를 설정하는 것이 좋습니다. 이렇게 하면 다른 프로세스나 작업에 필요한 여유 연결을 확보할 수 있습니다.
라는 Chat-GPT 4 를 참고하여 80개로 잡고 진행하였다.
아래를 보면 확실히 좋아졌다.
약 1퍼센트로 좋아진것을 확인할 수 있다.
createdAt 을 Indexing 을 통한 성능 개선 + hikari maximum-pool-size 80 으로 Connection Pool 증가
createdAt 를 정렬시켜 가져오므로 createdAt 를 Indexing 을 걸어 시도해보겠다.
와우... 놀라운..속도 변화 이다...
실패가 하나도 없다...
반응형
LIST
'TIL' 카테고리의 다른 글
2023.08.25 면접 질문 (0) | 2023.08.26 |
---|---|
2023.08.19 (0) | 2023.08.19 |
2023.08.17 (0) | 2023.08.17 |
2023.08.15 (0) | 2023.08.16 |
2023.08.14 (0) | 2023.08.14 |