꾸준히 안타치기

페이징을 왜 써야할까? 본문

iOS/문제해결

페이징을 왜 써야할까?

글자줍기 2022. 6. 9. 03:37
반응형

서버에서 게시글호출 중..  페이징 처리에 대해서 생각하게 됬다. 페이징을 하지 않았을 경우의 문제점에 대해 생각해보게 되었는데 클라이언트와 서버입장으로 생각해보았다.

 

서버 문제점

많은 양의 데이터가 저장된 경우 한번에 읽어 경우에 처리속도가 늦어진다.

 

클라이언트 문제점

데이터를 읽어오는 범위를 잘못설계시, 데이터가 낭비될 있다.

데이터를 받는데도 시간이 오래걸리고, 받을때도 네트워크 자원을 필요이상으로 소모하게 된다.

 

but, 너무 작은 크기로 쪼개면 통신횟수가 늘어나므로 이 또한 문제

통신횟수를 크게 늘리지 않으면서 너무크지 않은 적절한 데이터를 나누어 주고 받도록 구성해야함.

서버 측에서도 나누어 받을 수 있도록 기능을 제공해야함.


 

클라이언트 측

Get방식으로 API를 호출할때 호출할 페이지 번호를 실어서 보낸다. Get에서는 별도의 파라미터를 전송하지 않고 모두 URL뒤에 엮어서 쿼리 스트링(Query String) 방식으로 전송한다.

앱화면에서 이미지를 *개씩 가져오게 하였고, 마지막 게시글이 화면 하단 스크롤에 닿으면 더보기 버튼을 띄우고,

더보기 버튼을 누를때마다 API를 호출해 페이지를 추가로 가져오게 하였다.

  • HTTP Method: Get
  • Content-Type: application/json

요청(Request)

page 조회하고자 하는 페이지 번호
userID 특정사용자의 게시글만 받아올 경우
perPage 각 페이지당 게시물 수 

응답(Response)

perPage 각 페이지당 게시물 수 
totalPage 전체 페이지 수
currentPage 전송된 페이지

서버측 (서비스)

페이지 번호를 받고, 보여줄 페이지당 게시글 수를 뿌려준다. 

SET @rownum:=0; //@rownum은 0부터시작
SELECT
  @rownum:= @rownum+1, AS ROWNUM //@rownum+1을 @rownum에 담고 ROWNUM행에 넣는다.  
  board.* FROM board // board테이블의 모든행을 board테이블로 지정
  order by date desc // 날짜컬럼행 역순으로 정렬
  limit $start ,$per_page; // 페이지부터 ~장만큼을 보여준다.

 

Mysql의 rownum이라는 것을 사용해서 index 재 정의한뒤에 역순정렬하고

시작페이지와 보여줄게시글 갯수 정하고 쿼리를 뿌려주었다.


 

뉴렉처샘의 오라클 방법 참고

https://www.youtube.com/playlist?list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og

https://www.youtube.com/watch?v=-YjsGGCAtik&list=PLq8wAnVUcTFWxwoc41CqmwnO-ZyRDL0og&index=18

Mysql 방법설명 

https://dawitblog.tistory.com/8

https://okky.kr/article/1100377 

https://oddly.tistory.com/69

 

mysql 에서 update시 순서대로 값 먹여서 업데이트하기 (mysql sequential numbering update)

mysql에서 가끔 보면 PK가 아닌 부분에서 indexing을 걸지않고 내부에서 indexing 역할하는 변수를 만드는데 이빨빠지는 경우가 많다 (잦은 경우에 많이 일어난다. 예를 들어서 특정 사용자별로 ordering

oddly.tistory.com

 

반응형
Comments