Skip to content

refactor: Blueprint Search 쿼리 최적화 #113

@mete0rfish

Description

@mete0rfish

🔥 구현 기능

1. N+1

현재 Blueprint Searching 관련 JPQL에서 N+1 문제가 발생하고 있다. 이는 Blueprint의 oneToMany 관계인 orderBlueprints, cartBlueprints으로 인해 발생한다. 현재 지연로딩이 설정되어 있지만, 연관 관계의 두 테이블을 추가로 조회하는 쿼리가 발생한다. 따라서, 간단하게 Fetch Join을 이용하여 모든 쿼리를 한 번에 수행하도록 변경하려고 한다.
image

2. 읽기 전용 트랜잭션

Search 서비스는 읽기 전용이기 때문에, 읽기 전용 트랜잭션을 통해 스냅샷 생성을 막아 성능 향상이 가능할 것으로 보인다. 따라서, 읽기 전용 트랜잭션 적용을 통해 성능 향상을 목표로 한다.

3. 인덱싱

Search의 경우 이름과 작가, 카테고리에 의해 검색된다. 따라서 해당 칼럼들에 대한 인덱싱을 통한 성능향상을 기대해볼 수 있을 것 같다.

🚧 작업목록

  • N+1 문제 해결
  • 읽기 전용 트랜잭션 도입
  • 인덱싱 도입

⏰ 추정 시간

3시간

🔗 관련 링크

N+1 문제
[JPA] DB Index 개념과 JPA에서 Index 설정하기
JPA 페이징 Performance 향상 방법

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions