오프셋 기반 페이지네이션 vs 커서기반 페이지네이션

2024. 2. 22. 12:26Project

  • 오프셋 기반 페이지네이션 - 페이징 (장단점)
    • offset만큼 읽는데 이전의 읽었던 것을 다시 쭉 읽은 후 조회해서 데이터가 많아지면 성능상 안 좋다.
    • 데이터 중복 문제: 2페이지 끝까지 읽었는데 앞에 최신 데이터가 들어오면 3페이지 읽을 때 중복이 발생할 수 있다.
    • JPA에서는 Pageable을 이용해서 쉽게 구현할 수 있다.
  • 커서기반 페이지네이션 - 무한스크롤 (장단점)
    • offset을 사용하지 않고 Cursor를 기준으로 다음 n개의 데이터를 응답해주는 방식이다.
    • 따라서 cursor가 unique한 값이어야한다.
    • 데이터 중복이 발생하지 않고, offset과 다르게 이전의 데이터를 읽지 않고 바로 다음 cursor에 대한 정보를 주면 되므로, 대량의 데이터를 다룰 때 성능상 좋다
    • 대신 where절에 여러 조건이 들어가면 성능이 offset보다 안좋다고 한다.
  • 참고블로그