Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
요약
스터디 목록 조회에 대해서 커서 기반의 페이징으로 변경한다.
세부사항
현재 offset 기반의 페이징의 경우 예를 들어 50,000 ~ 50,005 번째의 5개의 데이터를 조회해오기 위해서는 DB 디스크에서 50,005 개의 데이터를 모두 읽어와야하며 디스크를 읽을 때 랜덤I/O 가 발생해 성능상 문제가 많습니다.
이를 해결하기 위한 방법인 커서 기반의 페이징을 적용하여 50,000 ~ 50,005 번째의 5개의 데이터를 조회해오더라도 필요한 데이터인 5개만 디스크로 부터 읽어올 수 있도록 개선합니다.
우선은 가장 빈번한 조회가 일어나는 메인 페이지의 study 목록 조회에 대해서 적용합니다.
참고 : 커서 기반 페이지네이션 (Cursor-based Pagination) 구현하기
참고 : Faster Pagination in Mysql – Why Order By With Limit and Offset is Slow?
프런트 팀원과 이야기한 결과, 페이징 조건이 많아질 수도 있고 이럴 때 마다 매 요청시마다 이 값들을 전부 보내는 것은 비효율적이므로 특정값을 부여한
cursor
라는 하나의 값만을 활용할 수 있도록 계산한 예정입니다. (자세한 내용은 위에 링크를 참고해주세요!)close #467