본문 바로가기
CS/데이터베이스

타임라인 최적화 - 03. 서비스가 커질수록 느려지는 타임라인

by 컴쏘 2023. 6. 6.

실습 - 타임라인 구현 흐름

  1. 회원의 팔로우 목록 조회
  2. 1번의 팔로우 회원 id로 게시물 조회

시간 복잡도 계산해보기

Follow 테이블과 Post 테이블이 있음

  • 1번 id를 가진 타임라인 요청을 처리하는 과정을 살펴보자

  1. from이 1번인 개체를 조회
  2. 해당 개체의 to 개체를 뽑아서 to의 id들로 게시물을 조회

시간복잡도

인덱스가 있다는 가정하에 (Follow, Post 둘다)

log(Follow 전체 레코드) + 해당 회원의 Following * log(Post 전체 레코드)

  • to 가 OR이기 때문에 해당 회원의 Following 수만큼을 곱하게 된다.

Fan Out On Read (Pull Model)

읽는 시점에 Fan Out을 시킨다.

  • 사용자가 매번 홈에 접속할 때마다 부하가 발생
  • 따라서 팔로워수가 많을 수록 점점 느린 타임라인을 경험

2023 KAKAO Tech Campus_BackEnd 필수 과정
DB(MySQL) 강의 정리 내용입니다.