페이지 매김이 서버로드를 줄입니까? (이론)


11

페이지 매김의 원인이 무엇인지 궁금합니다. 페이지 당 반환되는 행 수를 기술적으로 제한하기 때문에 서버의 부담을 덜기 때문에 사용됩니까?

나는 매김없이 무언가를하고 싶었지만 이것에 익숙하지 않다면 (나는 아마추어입니다) 기술적으로 OK인지 궁금해하기 시작했습니다.


이 사이트에서 "질문"을 클릭했을 때 신경 쓰지 않는 수천 개의 질문을 브라우저가 다운로드하여 렌더링하기를 정말로 원하십니까?
제레미

3
페이지 매김은 DB보다 인간에게 더 많습니다.
Malfist

답변:


10

페이지 매김을 수행하는 데는 여러 가지 이유가 있으며 서버로드를 줄이는 것이 하나에 불과합니다. 그러나 Stephen Orr 는 유효한 포인트를 제기합니다. 여전히 데이터 양을 먼저 찾아야합니다. 당신이 있는지 확인해야합니다 쿼리가 신속하고 과도하게 서버를로드하지 않습니다.

다른 이유는 다음과 같습니다.

  • 한 번에 클라이언트에 반환되는 데이터 양을 줄입니다. 데이터가 많은 경우 상당한 시간이 걸리고 많은 메모리를 차지할 수 있습니다.
  • 사용자는 종종 모든 데이터에 관심이 없지만 가장 최근의 데이터에만 관심이 있습니다. 두 페이지의 데이터 만 반환하면 사용자가 볼 수없는 데이터를 얻을 수 없습니다.

이 두 가지 경우 모두 사용자가 보지 않을 데이터 또는 일부 데이터를 처리하여 데이터를 가져올 수있는 모든 데이터를 기다리는 것을 원하지 않습니다.


2
+1 비슷한 것을 쓰고 있었지만 너무 빨랐습니다. 페이지 매김 콘텐츠도 더 많은 추가 내용을 표시하는 데 사용된다는 것을 추가하겠습니다.
yannis

현재 페이지에 맞는 것보다 더 많은 데이터가 있다는 것을 알면 페이지 수를 알지 않고도 페이지를 만들 수 있습니다.
Carlo Kuip

3

구현에 따라 다릅니다.

페이지 렌더링 속도가 빨라지지만 반드시 서버의로드를 줄일 필요는 없습니다. 대부분의 순진한 페이지 매김 알고리즘은 먼저 쿼리를 수행하여 페이지 수를 결정한 다음 다시 쿼리하여 "페이징 된"결과 집합을 가져와야합니다.


가장 순진한 페이지 매김 알고리즘은 몇 개의 페이지가 있어야하는지 결정하기 위해 먼저 쿼리를 수행해야합니다 . (멋지게 구조화 된 관계형 데이터베이스)
yannis

@YannisRizos, 절대적으로. 방금 엄청나게 잘못 구성된 관계형 데이터베이스 (결과를 얻기 위해 많은 쿼리에 7 또는 8 개의 다른 테이블을 쿼리)를 사용하여 이것의 어두운면을 보았습니다.
Steve Hill

@YannisRizos : "DB에 대한 스트레스"를 정의하십시오. 여전히 두 줄의 쿼리를 계속 진행하고 있습니다. 쿼리에서 페이지를 매기거나 (행 수 슈퍼 선택) 결과를 다른 계층에 캐싱합니까? db 스트레스가 너무 크다고 말할 수있는 변수가 너무 많습니다. 트랜잭션 의미에서 올바르게 수행하면 (페이지에서 더티 읽기 / 일관되지 않은 수를 허용합니까?) db "스트레스"/로드가 증가하지만 프로그래밍은 단순화된다고 주장합니다.
Jé Queue

@ Xepoch 나는 너무 많은 스트레스를 말하지 않았다. 단지 어떤 수와 제한된 선택 <전체 선택. 그리고 이것은 잘 구조화 된 관계형 DB에 대한 일반적인 시나리오에만 해당됩니다.
yannis

1

페이지 매김을 통해 얻을 수있는 가장 큰 가치는 다음을 통해 애플리케이션 속도를 향상시키는 것입니다.

1-클라이언트와 서버간에 전송되는 데이터 제한. 사용자가 10 명을 찾으면 1000000 명의 고객을 읽을 필요가 없습니다.

2- 사용자의 관점에 맞는 행만 검색하여 쿼리 성능을 크게 향상시킵니다. 사용자가 처음 10 명의 고객을 볼 경우 1000000 명의 고객을 읽을 필요는 없습니다.

3-페이지 매김은보다 신선한 데이터를 제공함으로써 도움이됩니다. 응용 프로그램에 많은 데이터 행이 표시되고 응용 프로그램 도메인에 표시된 표의 데이터 행을 많이 업데이트해야하는 경우 페이지 목록의 20 페이지로 이동하면 일부 행의 데이터가 손상되었을 수 있습니다. 변경되었습니다. 호텔의 주가 또는 사용 가능한 객실을 읽는 응용 프로그램을 생각해보십시오. 오래된 데이터를 검색하여 클라이언트에 배치하는 것은 아무 소용이 없습니다.

페이지 매김은 필터링과 결합하여 최종 사용자가 특정 시나리오에서 요구하는 방식 (이 요구를 충족시키기 위해 우수한 설계로 이어질 것으로 예상 됨)이 여러 사용자가 데이터베이스에 도달 할 때 응용 프로그램을 크게 향상시키는 방법에 대한 이해입니다. 동시에.

페이지 매김이 프로그램에 항상 쉬운 것은 아닙니다. 경우에 따라 단순하지만 쓰기가 매우 복잡하여 전체 테이블 스캔을 수행하지 않고 SQL 쿼리를 실행할 수 있습니다. 이것은 물론 인덱스, 필터 조건 및 Where 문에 따라 다릅니다.


-4

페이지 매김은 모든 조기 최적화의 어머니입니다. 페이지 매김없이 사이트를 작성해도됩니다.

릴리스 후 한 번의 호출로 너무 많은 데이터를로드하거나 사용자가 원하지 않는 데이터를 바쁘기 때문에 원하는 정보를 기다려야하는 경우 Ajax 솔루션을 작성하십시오. 사람들이 아래로 스크롤 할 때만 페이지를로드합니다 (Twitter, Tumblr, Google 이미지 검색 참조).

편집 : 위의 두 번째 단락은 일반적인 반응은 "그러나 어떤 시점에서 페이지 매김을 알고 있다는 것을 알고 있다면 던질 무언가를 개발하는 데 시간을 낭비하지 않고 조기에 처리 할 수도 있다는 가정하에 작성되었습니다. 떨어져."

모든 조기 최적화의 어머니 일뿐 만 아니라 페이지 매김은 UX의 악몽 이며 전체 페이지 위에 많은 추가 개발이 필요하지 않은 더 나은 솔루션 이 있다고 생각합니다 .

다운 보트 수가 많음에도 불구하고이 답변을 남기고 싶습니다. 비록 그것이 최고의 글이 아니 었더라도 감정에 의지하기 때문입니다.


5
이 문장에 동의하지 않습니다. 페이지 매김은 DB를 최적화하는 것이 아니라 사람에게 관리 가능한 청크로 데이터를 제공하는 것입니다. 해리포터가 모두 한 페이지에 있다면 읽을 수 있습니까? 세금 코드가 모두 한 페이지에있는 경우 세금을 신고 할 수 있습니까?
Malfist

@Malfist : 한 페이지에서 이러한 것들을 처리 할 수없는 유일한 이유는 페이지 자체가 너무 크기 때문입니다. 웹 페이지에서는 문제가되지 않습니다. 따라서 내가 인용 한 사이트는 페이지 매김에 대한 더 나은 솔루션을 찾았지만 Lolcats는 현재 거의 2000 페이지를 가지고 있으며 합리적인 방법으로 페이지를 매길 수 없습니다. 그러나 그것은 당신의 downvote입니다, 당신이 원하는대로 사용하십시오.
pdr

1
@Malfist : 또한 그 덩어리가 바뀌지 않으면 관리 가능한 덩어리로 분할하는 것이 충분합니다. 1-4 페이지를 읽고 다음에 다시 돌아와서 5 페이지를 읽고 싶습니다. 그러나 많은 경우 페이지 매김 된 웹 사이트가 가장 최근의 항목 목록입니다. 나중에 5 페이지로 돌아 가면, 목록에 완전히 새로운 1.5 페이지가 있기 때문에 마지막으로 방문했을 때부터 실제로 3 페이지의 절반과 4 페이지의 절반이 표시됩니다.
pdr

2
-1 이것에도 동의하지 않습니다. 왜 어디서 설명해야할지 잘 모르겠습니다.
Craige

@Craige : 그럼 좋아요. 나는 그것에 대해 많은 주장을 할 수는 없습니다.
pdr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.