dev.Log
커서기반 페이지네이션 본문
Pagination의 두가지 처리
1.오프셋 기반 페이지네이션 : DB의 offset 쿼리를 사용하여 페이지 단위로 요청/ 응답하게 구현
2.커서 기반 페이지네이션 : 클라이언트가 가져간 마지막 row의 순서상 다음 row들을 n개 요청, 응답하게 구현
<오프셋 기반 페이지네이션의 문제>
My SQL
SELECT id FROM `post` ORDER BY id DESC LIMIT 20, 40
Oracle
select * from (" + " select rownum num, N.*"
+ " from (select * from post where use_yn = 1 order by post_id desc) N" + ")
where num between ? and ?";
문제1. 각각의 페이지를 요청하는 사이에 데이터의 변화가 있는 경우 중복 데이터 노출
문제2. 대부분의 RDBMS에서 OFFSET 쿼리의 퍼포먼스 이슈
오프셋기반은 원하는 데이터가 몇 번째 있는가가 중요!
<커서 기반 페이지네이션> : 어떤 데이터의 다음에 있는가가 중요!
'BACKEND.*' 카테고리의 다른 글
beanconfig 예제 (0) | 2020.07.09 |
---|---|
DI 기초예제 (0) | 2020.07.08 |
코드 커버리지 (0) | 2020.07.07 |
sql dummy data 생성하기 (1) | 2020.07.07 |
proxy로 aop 구현 (0) | 2020.07.06 |
Comments