Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BE] Stage 수정 시 발생하는 비효율적인 쿼리를 개선한다. #988

Closed
seokjin8678 opened this issue May 21, 2024 · 0 comments · Fixed by #991
Closed

[BE] Stage 수정 시 발생하는 비효율적인 쿼리를 개선한다. #988

seokjin8678 opened this issue May 21, 2024 · 0 comments · Fixed by #991
Assignees
Labels
BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업

Comments

@seokjin8678
Copy link
Collaborator

✨ 세부 내용

Stage 수정 시 다음과 같은 쿼리가 발생합니다.

image

N명이 참여한 공연을 수정 시, N번의 Insert 쿼리와 Delete 쿼리가 각 발생하는 것을 볼 수 있습니다.

원인은 공연을 수정할 때, 수정해야 하는 아티스트가 기존 아티스트에 참여하는 것을 확인하기가 힘들어, 단순히 모두 삭제하고 재등록하는 방법으로 구현해서 그렇습니다.

공연을 추가하는 요청은 관리자 기능이고, 그렇게 빈번한 요청이 아니기에 크리티컬한 문제는 아니지만, 공연의 수정의 경우 빈도가 잦을 수 있기에 개선하면 좋을 것 같습니다.

개선 방향은 Stage 엔티티에 @OneToMany 관계의 List<StageArtist>를 둬서 기존 StageArtistRepository로 저장하던 것을, 변경 감지를 활용하여 엔티티로 저장하면 불필요한 쿼리도 줄어들고, 보다 도메인에 집중된 비즈니스 로직으로 변경할 수 있을 것 같습니다.

⏰ 예상 소요 시간

3시간

@seokjin8678 seokjin8678 added BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업 labels May 21, 2024
@seokjin8678 seokjin8678 self-assigned this May 22, 2024
seokjin8678 added a commit that referenced this issue May 30, 2024
* feat: Staga에 `@OneToMany` 관계의 List<StageArtist> 필드 추가

* refactor: StageArtistRepository 의존 제거
@github-project-automation github-project-automation bot moved this from Todo to Done in 2023-festa-go May 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
BE 백엔드에 관련된 작업 ⚙️ 리팩터링 리팩터링에 관련된 작업
Projects
Status: Done
1 participant