Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Skipalong's tistory

231228 TIL - 커서기반 페이징 본문

TIL

231228 TIL - 커서기반 페이징

Skipalong 2023. 12. 29. 00:36

오늘은 저번 개인과제 피드백을 받았다. 그중에 페이징에 관한 내용이 있어서 정리해보겠다.

 

내가 구현한 페이징은 일반적인 게시판 형식으로 페이지와 보여줄 게시글 수인 사이즈, 정렬방식으로 구성된 페이징이였다. 그리고 오늘 피드백에서 새로 알게된 커서기반 페이징이란 것이 있었다.

 

커서기반 페이징은 페이스북이나 인스타그램 같은 SNS 같이 페이지형식으로 되어있지 않고 화면에 표시된 마지막 게시글을 본 후 그 게시물을 기준으로 다음 게시물을 계속 해서 보여주는 형식이다. 

 

일반적인(Offset-Limit 기반) 페이징 :
    방식: 특정 페이지의 데이터를 가져오기 위해 OFFSET 및 LIMIT 절을 사용하여 쿼리를 수행한다.
    장점 :
        간단하고 직관적인 구현이 가능한다.
    단점 :
        대량의 데이터를 처리할 때 성능 저하가 발생할 수 있다. 특히, 페이지 번호가 증가할수록 OFFSET이 증가하므로

        데이터베이스는 많은 레코드를 건너뛰어야 한다.
커서 페이징 :
    방식: 이전 페이지의 마지막 항목에 대한 정보를 사용하여 현재 페이지의 데이터를 가져옵니다. 쿼리에는 WHERE 절을 사용하여 커서를               기준으로 데이터를 선택합니다.
    장점 :
        대량의 데이터를 효율적으로 처리할 수 있다. 이전 페이지의 데이터를 모두 스킵할 필요가 없기 때문이다.
        페이지 크기와 상관없이 일관된 성능을 제공한다.
    단점 :
        일반적인 페이징보다 조금 더 복잡한 구현이 필요하다.

 

기존에 쓰던 페이징방식은 JPA 쿼리를 따로 작성하지 않아도 Page타입을 지원해서 비교적 쉽게 구현하였지만 커서방식은 직접 쿼리를 작성해서 구현해야 하기 때문에 더 어렵고 복잡하지만 이런방식도 실무에서 많이 사용한다고 하고 면접에서도 나오는 질문이라고 하기 때문에 다음 리스트 조회 구현을 할때는 더 알아보고 찾아봐서 커서기반 페이징을 해 볼 수 있도록 해야겠다.

'TIL' 카테고리의 다른 글

240102 TIL - 칸반보드 카드의 컬럼간 이동  (2) 2024.01.03
231229 TIL - 칸반보드의 카드 옮기기  (1) 2023.12.30
231227 TIL - Docker  (0) 2023.12.28
231226 TIL - Trello  (0) 2023.12.27
231222 TIL - JPQL 과 QueryDSL  (0) 2023.12.23