본문 바로가기

분류 전체보기210

타임라인 최적화 - 01. 타임라인이란? 타임라인 트위터, 페이스북, 인스타그램 등 SNS 팔로워들의 게시물을 보여주는 피드 실습 - 요구사항 회원 ID를 받아, 해당 회원의 팔로워들의 게시물을 시간순으로 조회 2023 KAKAO Tech Campus_BackEnd 필수 과정 DB(MySQL) 강의 정리 내용입니다. 2023. 6. 6.
페이지네이션 최적화 - 05. 커버링 인덱스 SQL문이 들어오게 되면, 바로 테이블에 접근하는 방식보다는 중간에 인덱스라는 테이블을 거쳐서 접근을 한 번 필터링 하고 테이블로 접근을 하는 것이 훨씬 빠름 → 검색 조건이 인덱스에 부합하다면, 테이블에 바로 접근 하는 것보다 인덱스를 통해 접근하는 것이 매우 빠르다. 그렇다면 테이블에 접근하지 않고, 인덱스로만 데이터 응답을 내려줄 순 없을까? → 커버링 인덱스 커버링 인덱스 예시 query SELECT 나이 FROM 회원 WHERE 나이 < 30 → 필요한 데이터는 나이 1개이다. (이는 인덱스 테이블에 있음) → 이러한 경우는 테이블에 접근하지 않고 인덱스 테이블의 접근으로 응답이 끝남 (빠르다) 다른 예시 query SELECT 나이, id FROM 회원 WHERE 나이 < 30 → id 필드도.. 2023. 6. 6.
페이지네이션 최적화 - 03. 오프셋 기반 페이징 구현의 문제(1) 오프셋 기반의 페이징 구현 : 마지막 페이지를 구하기 위해 전체 갯수를 알아야 함 전체 페이지의 크기가 클수록 전체 사이즈를 구하는 것 자체가 큰 부하가 될 수 있음 실제 대용량 데이터를 제공하는 서비스를 본다면, 마지막 페이지에 대한 접근을 막거나 무한 스크롤 형태로 제공 그 외에도 쿼리를 보낼 때, offset과 limit의 쿼리를 사용 4번 Offset부터 시작하기 위해 0~3번 Offset까지 데이터를 다시 읽음 4번 Offset부터 size만큼 반환 실제로 반환하는 데이터는 2개인데, 반환하는 2개의 데이터를 읽기까지 4개의 데이터를 읽고 버리게 된다. **(**지금은 Offset이 작기때문에 4개만 버리지만, 실제로는 Offset 사이즈가 커지면 커질수록 버려지는 데이터들이 훨씬 많다) 따라서.. 2023. 6. 6.
페이지네이션 최적화 - 01. 페이지네이션이란 많은 양의 데이터를 어떻게 노출시킬 것인가? 다음 페이지 vs 스크롤 다음 페이지를 넘기는 방식 : 페이지네이션 페이지를 넘기지 않고 내리는 방식 : 스크롤 클라이언트가 원하는 페이지의 원하는 사이즈를 서버에게 요청 서버는 페이지와 사이즈에 따라 적절한 데이터를 스캔 (요청 내용 : page 0, size 2 → size를 2개로 나눴을 때 가장 첫번째 page를 요청하는것) 사이즈를 2로 나눴을 때 첫번째 데이터 2개를 찾아 해당하는 데이터를 반환 여기서는 6을 2개씩 나누면 3 → 첫번째 데이터는 1~2번 게시물 : 반환하는 것 대부분 서버는 전체페이지(totalPages) 혹은 전체 개수(totalElements)를 준다. (UI 상에서 마지막 페이지를 알아야 더보기 화살표를 표시하지 않기 때문) .. 2023. 6. 6.