"N+1 문제 관련하여 어떻게 하면 해결할 수 있느냐?"
최근에 위와 같은 질문을 받았었는데요. 당연히 일반적으로 fetch join을 사용하니까 위와 같이 대답을 했었는데. 그렇다고 모든 걸 fetch join으로 사용할 수 없으니까 다른 최적화된 방법에 대해 아는게 있냐고 질문하시더라고요. 그래서 그 부분과 관련해서 질문드리는데요.
혹시 이론적인 부분 말고 실무적으로 위와 같은 내용을 해결할 수 있는 방법이 있을까요?
제가 생각했던 방법 중의 하나는 연관 관계를 맺지 않은 상태에서 해당 테이블의 PK를 갖고 있는 건데. (예를 들어, 주문 테이블, 상품 테이블이 있다면 주문 테이블에서 상품 테이블의 PK를 단순 컬럼 선언으로 갖고 있는 구조) 이런 구조로 해결할 수도 있나요?
이론적으로 JPA에서는 연관관계를 맺지만 실무적으로도 연관관계를 무조건적으로 맺어야 하나요? 예를 들어, FK가 걸려있는 회원과 게시판 테이블이 있는데 '게시판 글 등록'을 하게 되면 실제 존재하는 회원인지 회원 테이블에서 확인을 할 텐데 회원 테이블의 데이터가 1,000만명이면 그걸 다 확인하는 구조일텐데 현실적으로 이런 것들을 고려해서 실무에서는 어떡게 해결하시는지 궁금합니다.
안녕하세요. ㅅㅎ님
제 생각에 문제를 내신 면접관 분이 다음 강의를 듣고 문제를 출제하신 것 같네요^^
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
링크: https://inf.run/CU9mR
해당 강의를 들어보시면 원하시는 답을 찾으실 수 있을거에요.
감사합니다.
답글