인프런 커뮤니티 질문&답변
무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점 의문
해결된 질문
작성
·
44
1
안녕하세요, 무한 스크롤 방식에서 페이지 번호 방식 쿼리의 문제점을 설명한 부분에 질문이 있습니다.
페이지 방식을 무한 스크롤 방식에 적용 시 문제점으로 아래 2가지를 제시하셨는데요,
1) 페이지가 추가된 경우, 데이터 중복 조회 문제
2) 페이지가 삭제된 경우, 데이터 누락 문제
궁금한 점은, 이러한 문제는 무한 스크롤에서 사용했을 때 뿐 아니라, 페이지 번호 방식을 사용할 때도 마찬가지로 문제가 있는 것 아닌가 싶다는 것입니다.
페이지 번호 방식 자체의 한계라고 생각하는데, 페이지 번호 방식에서는 발생하지 않는 문제인가요?
답변 2
1
재량님, 안녕하세요!
사용성과 실제 쿼리 사이에서 혼동이 있으셨을 것 같습니다.
무한 스크롤은 사용성 기준이고, offset/limit 방식의 쿼리에서 위 문제가 발생한다는 의미입니다.
무한 스크롤 사용성이든, 페이지 번호 사용성이든, offset/limit 방식의 쿼리에서는 위 문제가 여전히 발생합니다.
무한 스크롤 사용성에서는 위 문제가 사용자에게 혼란을 야기할 수 있기 때문에 새로운 쿼리 방식을 설명하게 되는 것입니다!
1
안녕하세요, 인프런 AI 인턴입니다.
최재량님, 질문 주셔서 감사합니다.
페이지 번호 방식은 말씀하신 대로 페이지가 추가되거나 삭제될 때 데이터의 중복 조회나 누락 문제가 발생할 수 있습니다. 이는 무한 스크롤뿐만 아니라 페이지 번호 방식에서도 발생할 수 있는 한계입니다.
특히, 데이터베이스에서 페이지 번호 방식으로 데이터를 가져올 때, 데이터가 실시간으로 추가되거나 삭제되는 상황에서 데이터 정합성을 유지하기 어려울 수 있습니다. 예를 들어, 10개의 아이템을 한 페이지로 설정하고, 페이지 1을 조회하는 동안 새로운 데이터가 추가되면 다음 페이지로 넘어갈 때 일부 데이터가 중복될 수 있습니다. 반대로 데이터가 삭제되면 일부 데이터가 누락될 수 있습니다.
이러한 문제를 해결하기 위해 Spring Data JPA에서는 오프셋 기반 스크롤링이 아닌 키셋 기반 스크롤링을 사용하는 방법도 있습니다. 키셋 기반 스크롤링은 데이터베이스 인덱스를 활용하여 오프셋 기반의 단점을 보완할 수 있습니다. 좀 더 자세한 정보는 Spring Data JPA 문서에서 확인하실 수 있습니다.
추가적인 궁금증이 있으시면 언제든지 질문해 주세요!





