찾다

 >  Q&A  >  본문

mysql - 수천만 개의 데이터 페이징, 오프셋이 더 큰 것으로 판명되면 속도를 최적화하는 방법은 무엇입니까?

mysql을 예로 들어보겠습니다. 일반적으로 데이터 양이 상대적으로 많으면 페이징을 사용할 때 오프셋이 커지고 쿼리 효율성이 낮아집니다.

예를 들어 게시물에 200만 개의 댓글이 있고 페이지당 10개가 표시된다면 20만 페이지가 소요될 때 데이터를 어떻게 처리해야 할까요?

예: NetEase Music의 경우 단일 노래에 대한 최대 댓글 수가 140만 개가 넘고 페이징 속도가 매우 잘 처리됩니다.

伊谢尔伦伊谢尔伦2752일 전890

모든 응답(2)나는 대답할 것이다

  • 给我你的怀抱

    给我你的怀抱2017-05-18 10:50:01

    첫째, NetEase Music이 데이터를 읽는 방식은 당연히 nosql을 사용하여 데이터를 읽는 것이라고 생각합니다.
    물론 데이터 테이블에 자주 액세스하지 않는 경우에도 데이터베이스를 직접 읽을 수는 있지만 mysql innodb 라이브러리에는 함정이 있습니다. 즉, 쿼리하는 페이지 수가 많을수록 크기가 작아집니다. 효과. 그래서 일반적으로 우리는 쿼리 효과를 향상시키기 위해 id를 사용합니다
    이전 쿼리 사용 제한 100000,10 id > 100000 제한 10인 경우 권장 쿼리 사용. 이렇게 하면 인덱스 사용이 보장됩니다.
    물론 테이블 분할 형태를 활용하면 단일 테이블의 데이터를 줄여 쿼리 효율성을 높일 수 있습니다

    회신하다
    0
  • PHPz

    PHPz2017-05-18 10:50:01

    redis를 사용하는 경우 목록에 ID를 저장한 다음 redis를 사용하여 목록의 조각을 얻은 다음 조각의 ID를 사용하여 mysql에 결과를 쿼리해야 합니다.

    물론 정렬을 추가하고 싶다면 방법이 없습니다.

    회신하다
    0
  • 취소회신하다