DB
-
커버링 인덱스로 뷰 쿼리 개선하기DB 2024. 8. 13. 19:03
현재 진행중인 도서 공유 서비스에는 포인트라는 것이 존재합니다.포인트는 서비스 내에서 사용할 수 있는 현금과 비슷한 느낌으로 포인트를 사용하여 책을 대여할 수 있습니다.실제 운영하는 서비스에서는 돈과 관련된 데이터에 오류가 발생하면 이는 곧바로 회사의 손실로 직결되는 중요한 데이터입니다.따라서 데이터 정합성을 유지하기 위해 다음과 같이 설계했습니다.회원의 포인트 변화는 포인트 이력과 변화량을 테이블에 저장포인트를 사용해야할 시점에 포인트 이력 테이블의 변화량을 계산하여 현재의 포인트를 조회 뷰에서 사용될 쿼리테스트를 진행할 51348 아이디에는 50만건의 더미 데이터 이력을 삽입했습니다.select pv1_0.user_id,pv1_0.total_point from ( SELECT u.id AS user_..
-
쿼리 개선기DB 2024. 8. 12. 21:03
삼성SW아카데미 11기에선 현재 3개의 프로젝트 중 첫번째 프로젝트인 공통프로젝트를 진행중입니다.저희 팀은 도서 인프라 취약지역 사람들을 위한 도서 공유 서비스를 기획하고 개발중입니다.메인 기능이기도 한 등록도서를 조회하는 기능에서 쿼리 성능이 저하되는 상황이 발생했습니다.문제 해결 과정에 대한 이해를 돕기 위해 간단한 ERD를 그려보았습니다.테이블에는 2백만건의 더미 데이터를 삽입하고 테스트를 진행했습니다. 문제의 쿼리 - Offset 페이징offset 페이징 방식은 offset 사이즈를 건너뛰어 limit 사이즈만큼의 데이터를 가져오는 방식을 뜻합니다.정확히 말하자면 offset 사이즈만큼을 건너뛰는 것이 아니라 offset 사이즈만큼 앞에서부터 읽어가며 필요한 데이터를 찾아가는 것입니다. 따라서 데..