pagination 2

게시글 Pagination 적용 (2 / 2 - 인피니티 스크롤형 게시판)

게시글 Pagination 적용 (1 / 2 - 리스트형 게시판) 지난 글에서는 OFFSET 기반 페이지네이션을 구현했다. 하지만 OFFSET 방식은 데이터가 많아질수록 성능이 저하되는 문제가 있다.이번에는 커서(Cursor) 기반 페이지네이션을 적용해보겠다.1. Offset vs. Cursor 페이지네이션 차이구분Offset 페이지네이션Cursor 페이지네이션쿼리 방식OFFSET 1000 LIMIT 10WHERE id 읽기 연산량1,010개 읽고 1,000개 스킵10개만 읽음속도데이터가 많아질수록 OFFSET 연산이 느려짐OFFSET 없이 빠름일관성중간에 데이터 추가/삭제 시 결과가 틀어질 가능성 있음항상 정확한 데이터 반환결론:데이터가 적다면 OFFSET 기반도 괜찮지만, 데이터가 많아질수록 Curs..

Project/Boilerplate 2025.03.10

게시글 Pagination 적용 (1 / 2 - 리스트형 게시판)

현 상황현재 데이터베이스에는 다음과 같은 데이터 존재유저(User): 50명게시글(Post): 10,000개댓글(Comment): 각 게시글당 5개씩, 총 50,000개기존 성능 문제  기존 방식으로 전체 게시글을 조회하면 총 15,791ms 소요 또한, 10,000개의 게시글 모두 불러옴 기존 쿼리 분석기존에는 LEFT JOIN FETCH를 사용하여 게시글과 모든 댓글을 한 번에 불러오는 방식@Query("SELECT DISTINCT p FROM Post p " + "LEFT JOIN FETCH p.comments c " + "LEFT JOIN FETCH c.user " + "LEFT JOIN FETCH p.user")List findAllWithComments(); 문제점모든 댓글을 ..

Project/Boilerplate 2025.03.10