작성
·
76
0
강의 영상 24분쯤 fetch join은 페이징 처리가 불가능하다고 말씀해주셨는데(사용하게 될 시 메모리에 임시로 모든 데이터 적재 후 페이징 처리로 설명), 페이징을 하지 않을 경우에도 Order rows가 1만건 이라면 1만건 모두 조회되는 것 아닌가요?
이럴 때도 메모리에 대한 문제가 있을 것 같은데 제가 잘못 이해한 것인지 설명 부탁드리겠습니다!
답변 2
0
안녕하세요. nickheatlhy님
생각하신 내용이 맞습니다.
그래서 이 문제는 바로 다음 내용에서 설명하는 페이징과 한계 돌파를 보시면 이해가 되실거에요 🙂
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. nickheatlhy님. fetch join과 페이징에 대한 질문을 해주셨네요.
컬렉션 fetch join을 사용할 경우, 페이징을 데이터베이스 단에서 수행하는 것이 불가능합니다. 대신 애플리케이션 메모리에서 페이징이 수행되기 때문에 문제가 발생할 수 있습니다. Fetch join으로 가져온 데이터는 중복된 행으로 인해 데이터의 양이 매우 많아질 수 있으며, 모든 데이터를 메모리에 적재한 뒤에 페이징을 처리하게 됩니다. 그렇기 때문에, 메모리 사용량이 증가하고 OutOfMemory 오류가 발생할 위험이 높아집니다.
단순히 페이징을 하지 않고 fetch join으로 데이터를 가져온다면, 역시 많은 양의 데이터를 메모리에 올리게 되므로 메모리 문제는 여전히 존재할 수 있습니다. 대량의 데이터를 효율적으로 처리하기 위해서는 페이징을 DB 단에서 처리할 수 있는 전략을 고려해야 합니다.
관련된 다른 질문들로는 다음이 있습니다:
1. “일대다 관계에서의 컬렉션 fetch join과 페이징에 대한 질문”
2. “fetch join outOfMemory 경우에 대해서 질문드립니다.”
3. “일대다 페치 조인과 페이징에 대해”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.